{"version":3,"mappings":"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AE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAEvkB,EAAE,SAASukB,EAAEvkB,EAAE,CAAC,IAAI+nB,GAAE,CAAE,EAAC,OAAOA,GAAE,WAAWxD,EAAEwD,GAAE,UAAU/nB,EAAE+nB,EAAC,EAAEA,EAAE,CAAC,YAAY,SAASA,EAAEC,EAAE,CAAC,IAAIC,GAAE,SAASjoB,EAAE+nB,EAAE,CAAC,OAAOA,EAAG,MAAKpmB,EAAE,EAAE,OAAO4iB,EAAE,GAAGvkB,EAAE,GAAG,CAAC,EAAE,KAAK2B,EAAE,EAAE,OAAO4iB,EAAE,GAAGvkB,EAAE,GAAG,CAAC,EAAE,KAAK2B,EAAE,EAAE,OAAO4iB,EAAE,GAAGvkB,EAAE,GAAG,CAAC,EAAE,KAAK2B,EAAE,EAAE,OAAO4iB,EAAE,GAAGvkB,EAAE,GAAG,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE+nB,EAAEC,CAAC,EAAE,GAAYC,KAAT,OAAW,KAAK,6BAA6BF,EAAE,yBAAyBC,EAAE,QAAQnrB,GAAEorB,GAAE,OAAO,EAAE5d,GAAE,GAAG+E,GAAE,EAAEA,GAAEvS,GAAEuS,IAAG,EAAE,QAAQqZ,GAAER,GAAE,EAAE7Y,GAAE,CAAC,EAAEjF,EAAE8d,GAAE,EAAE7Y,GAAE,CAAC,EAAE8B,EAAE+W,GAAE,EAAE7Y,GAAE,CAAC,EAAEvF,EAAE,EAAEA,EAAE4e,GAAE5e,GAAG,EAAEQ,GAAE,KAAKrK,EAAEmK,EAAE+G,CAAC,CAAC,EAAE,OAAO7G,EAAC,CAAC,EAAE,OAAO0d,CAAC,EAAG,EAAC7W,EAAE,UAAU,CAAC,IAAIqT,EAAE,CAAE,EAACvkB,EAAE,EAAE+nB,EAAE,CAAC,UAAU,UAAU,CAAC,OAAOxD,CAAC,EAAE,MAAM,SAASvkB,EAAE,CAAC,IAAI+nB,EAAE,KAAK,MAAM/nB,EAAE,CAAC,EAAE,OAAWukB,EAAEwD,CAAC,IAAI,EAAE/nB,EAAE,EAAE,IAAjB,CAAmB,EAAE,IAAI,SAASukB,EAAEvkB,EAAE,CAAC,QAAQgoB,GAAE,EAAEA,GAAEhoB,EAAEgoB,IAAG,EAAED,EAAE,QAAWxD,IAAIvkB,EAAEgoB,GAAE,EAAE,IAAd,CAAgB,CAAC,EAAE,gBAAgB,UAAU,CAAC,OAAOhoB,CAAC,EAAE,OAAO,SAAS+nB,EAAE,CAAC,IAAIC,EAAE,KAAK,MAAMhoB,EAAE,CAAC,EAAEukB,EAAE,QAAQyD,GAAGzD,EAAE,KAAK,CAAC,EAAEwD,IAAIxD,EAAEyD,CAAC,GAAG,MAAMhoB,EAAE,GAAGA,GAAG,CAAC,CAAC,EAAE,OAAO+nB,CAAC,EAAEle,EAAE,SAAS0a,EAAE,CAAC,IAAIvkB,EAAEukB,EAAEwD,EAAE,CAAC,QAAQ,UAAU,CAAC,MAAO,EAAC,EAAE,UAAU,SAASxD,GAAE,CAAC,OAAOvkB,EAAE,MAAM,EAAE,MAAM,SAASukB,GAAE,CAAC,QAAQwD,GAAE/nB,EAAEioB,GAAE,EAAEA,GAAE,EAAEF,GAAE,QAAQxD,GAAE,IAAIyD,EAAED,GAAE,UAAUE,GAAEA,GAAE,CAAC,CAAC,EAAE,EAAE,EAAEA,IAAG,EAAEA,GAAEF,GAAE,SAASA,GAAE,OAAOE,IAAG,EAAE1D,GAAE,IAAIyD,EAAED,GAAE,UAAUE,GAAEA,GAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,GAAE,OAAOE,IAAG,GAAG1D,GAAE,IAAIyD,EAAED,GAAE,UAAUE,GAAEA,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAED,EAAE,SAASzD,GAAE,CAAC,QAAQvkB,GAAE,EAAE+nB,GAAE,EAAEA,GAAExD,GAAE,OAAOwD,IAAG,EAAE/nB,GAAE,GAAGA,GAAEioB,EAAE1D,GAAE,OAAOwD,EAAC,CAAC,EAAE,OAAO/nB,EAAC,EAAEioB,EAAE,SAAS1D,GAAE,CAAC,GAAG,KAAKA,IAAGA,IAAG,IAAI,OAAOA,GAAE,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,KAAK,iBAAiBA,EAAC,EAAE,OAAOwD,CAAC,EAAEjlB,EAAE,SAASyhB,EAAE,CAAC,IAAIvkB,EAAEukB,EAAEwD,EAAE,CAAC,QAAQ,UAAU,CAAC,MAAO,EAAC,EAAE,UAAU,SAASxD,EAAE,CAAC,OAAOvkB,EAAE,MAAM,EAAE,MAAM,SAASukB,EAAE,CAAC,QAAQwD,GAAE/nB,EAAEioB,GAAE,EAAEA,GAAE,EAAEF,GAAE,QAAQxD,EAAE,IAAI,GAAGyD,EAAED,GAAE,OAAOE,EAAC,CAAC,EAAED,EAAED,GAAE,OAAOE,GAAE,CAAC,CAAC,EAAE,EAAE,EAAEA,IAAG,EAAEA,GAAEF,GAAE,QAAQxD,EAAE,IAAIyD,EAAED,GAAE,OAAOE,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAED,EAAE,SAASzD,EAAE,CAAC,GAAG,KAAKA,GAAGA,GAAG,IAAI,OAAOA,EAAE,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,KAAKA,GAAGA,GAAG,IAAI,OAAOA,EAAE,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,OAAOA,EAAC,CAAE,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,IAAI,IAAI,MAAO,IAAG,QAAQ,KAAK,iBAAiBA,CAAC,CAAC,EAAE,OAAOwD,CAAC,EAAEW,GAAE,SAAS1oB,EAAE,CAAC,IAAI+nB,EAAExD,EAAE,cAAcvkB,CAAC,EAAE,MAAM,CAAC,QAAQ,UAAU,CAAC,MAAO,EAAC,EAAE,UAAU,SAASukB,EAAE,CAAC,OAAOwD,EAAE,MAAM,EAAE,MAAM,SAASxD,EAAE,CAAC,QAAQvkB,EAAE,EAAEA,EAAE+nB,EAAE,OAAO/nB,GAAG,EAAEukB,EAAE,IAAIwD,EAAE/nB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEmD,GAAE,SAASnD,EAAE,CAAC,IAAI+nB,EAAExD,EAAE,mBAAmB,KAAK,GAAG,CAACwD,EAAE,KAAK,uBAAuB,SAASxD,EAAEvkB,EAAE,CAAC,IAAIgoB,GAAED,EAAE,GAAG,EAAE,GAAMC,GAAE,QAAL,IAAqBA,GAAE,CAAC,GAAG,EAAEA,GAAE,CAAC,IAAnB,MAAsB,KAAK,qBAAqB,KAAI,IAAIA,EAAED,EAAE/nB,CAAC,EAAE,MAAM,CAAC,QAAQ,UAAU,CAAC,MAAO,EAAC,EAAE,UAAU,SAASukB,EAAE,CAAC,MAAM,CAAC,EAAEyD,EAAE,OAAO,EAAE,EAAE,MAAM,SAASzD,EAAE,CAAC,QAAQvkB,EAAEgoB,EAAED,GAAE,EAAEA,GAAE,EAAE/nB,EAAE,QAAQ,CAAC,IAAIioB,IAAG,IAAIjoB,EAAE+nB,EAAC,IAAI,EAAE,IAAI/nB,EAAE+nB,GAAE,CAAC,EAAE,GAAG,OAAOE,IAAGA,IAAG,MAAMA,IAAG,UAAU,CAAC,GAAG,EAAE,OAAOA,IAAGA,IAAG,OAAO,KAAK,oBAAoBF,GAAE,GAAG,IAAIE,GAAEA,IAAG,KAAK,CAACA,GAAE,KAAKA,KAAI,EAAE,MAAM,IAAIA,IAAG1D,EAAE,IAAI0D,GAAE,EAAE,EAAEF,IAAG,CAAC,CAAC,GAAGA,GAAE/nB,EAAE,OAAO,KAAK,oBAAoB+nB,GAAE,EAAE,CAAC,CAAC,EAAEG,GAAE,UAAU,CAAC,IAAI3D,EAAE,GAAGvkB,EAAE,CAAC,UAAU,SAASA,EAAE,CAACukB,EAAE,KAAK,IAAIvkB,CAAC,CAAC,EAAE,WAAW,SAASukB,EAAE,CAACvkB,EAAE,UAAUukB,CAAC,EAAEvkB,EAAE,UAAUukB,IAAI,CAAC,CAAC,EAAE,WAAW,SAASA,EAAEwD,EAAEC,EAAE,CAACD,EAAEA,GAAG,EAAEC,EAAEA,GAAGzD,EAAE,OAAO,QAAQ0D,GAAE,EAAEA,GAAED,EAAEC,IAAG,EAAEjoB,EAAE,UAAUukB,EAAE0D,GAAEF,CAAC,CAAC,CAAC,EAAE,YAAY,SAASxD,EAAE,CAAC,QAAQwD,EAAE,EAAEA,EAAExD,EAAE,OAAOwD,GAAG,EAAE/nB,EAAE,UAAUukB,EAAE,WAAWwD,CAAC,CAAC,CAAC,EAAE,YAAY,UAAU,CAAC,OAAOxD,CAAC,EAAE,SAAS,UAAU,CAAC,IAAIvkB,EAAE,GAAGA,GAAG,IAAI,QAAQ+nB,EAAE,EAAEA,EAAExD,EAAE,OAAOwD,GAAG,EAAEA,EAAE,IAAI/nB,GAAG,KAAKA,GAAGukB,EAAEwD,CAAC,EAAE,OAAO/nB,EAAE,GAAG,CAAC,EAAE,OAAOA,CAAC,EAAEmoB,GAAE,SAAS5D,EAAE,CAAC,IAAIvkB,EAAEukB,EAAEwD,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEprB,GAAE,CAAC,KAAK,UAAU,CAAC,KAAKorB,EAAE,GAAG,CAAC,GAAGF,GAAG/nB,EAAE,OAAO,CAAC,GAAMioB,GAAH,EAAK,MAAM,GAAG,KAAK,2BAA2BA,CAAC,CAAC,IAAI1D,GAAEvkB,EAAE,OAAO+nB,CAAC,EAAE,GAAGA,GAAG,EAAOxD,IAAL,IAAO,OAAO0D,EAAE,EAAE,GAAG1D,GAAE,MAAM,MAAM,IAAIyD,EAAEA,GAAG,EAAErmB,GAAE4iB,GAAE,WAAW,CAAC,CAAC,EAAE0D,GAAG,EAAE,CAAC,IAAIprB,GAAEmrB,IAAIC,EAAE,EAAE,IAAI,OAAOA,GAAG,EAAEprB,EAAC,CAAC,EAAE8E,GAAE,SAAS4iB,GAAE,CAAC,GAAG,IAAIA,IAAGA,IAAG,GAAG,OAAOA,GAAE,GAAG,GAAG,IAAIA,IAAGA,IAAG,IAAI,OAAOA,GAAE,GAAG,GAAG,GAAG,IAAIA,IAAGA,IAAG,GAAG,OAAOA,GAAE,GAAG,GAAG,GAAOA,IAAJ,GAAM,MAAO,IAAG,GAAOA,IAAJ,GAAM,MAAO,IAAG,KAAK,KAAKA,EAAC,EAAE,OAAO1nB,EAAC,EAAE8rB,GAAE,SAASpE,EAAEvkB,EAAE+nB,EAAE,CAAC,QAAQC,EAAE,SAASzD,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAExD,EAAEyD,EAAEhoB,EAAEioB,EAAE,IAAI,MAAM1D,EAAEvkB,CAAC,EAAEnD,EAAE,CAAC,SAAS,SAAS0nB,EAAEvkB,EAAEgoB,EAAE,CAACC,EAAEjoB,EAAE+nB,EAAExD,CAAC,EAAEyD,CAAC,EAAE,MAAM,SAASzD,EAAE,CAACA,EAAE,YAAY,QAAQ,EAAEA,EAAE,WAAWwD,CAAC,EAAExD,EAAE,WAAWyD,CAAC,EAAEzD,EAAE,UAAU,GAAG,EAAEA,EAAE,UAAU,CAAC,EAAEA,EAAE,UAAU,CAAC,EAAEA,EAAE,UAAU,CAAC,EAAEA,EAAE,UAAU,CAAC,EAAEA,EAAE,UAAU,CAAC,EAAEA,EAAE,UAAU,GAAG,EAAEA,EAAE,UAAU,GAAG,EAAEA,EAAE,UAAU,GAAG,EAAEA,EAAE,YAAY,GAAG,EAAEA,EAAE,WAAW,CAAC,EAAEA,EAAE,WAAW,CAAC,EAAEA,EAAE,WAAWwD,CAAC,EAAExD,EAAE,WAAWyD,CAAC,EAAEzD,EAAE,UAAU,CAAC,EAAE,IAAIvkB,EAAE2B,EAAE,CAAC,EAAE4iB,EAAE,UAAU,CAAC,EAAE,QAAQ0D,EAAE,EAAEjoB,EAAE,OAAOioB,EAAE,KAAK1D,EAAE,UAAU,GAAG,EAAEA,EAAE,WAAWvkB,EAAEioB,EAAE,GAAG,EAAEA,GAAG,IAAI1D,EAAE,UAAUvkB,EAAE,OAAOioB,CAAC,EAAE1D,EAAE,WAAWvkB,EAAEioB,EAAEjoB,EAAE,OAAOioB,CAAC,EAAE1D,EAAE,UAAU,CAAC,EAAEA,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE5iB,EAAE,SAAS4iB,EAAE,CAAC,QAAQvkB,EAAE,GAAGukB,EAAEwD,EAAE,GAAG,GAAGxD,GAAGyD,EAAEzD,EAAE,EAAE1nB,EAAEwN,EAAG,EAAC1I,GAAE,EAAEA,GAAE3B,EAAE2B,IAAG,EAAE9E,EAAE,IAAI,OAAO,aAAa8E,EAAC,CAAC,EAAE9E,EAAE,IAAI,OAAO,aAAamD,CAAC,CAAC,EAAEnD,EAAE,IAAI,OAAO,aAAakrB,CAAC,CAAC,EAAE,IAAI3Y,GAAEqZ,GAAEte,GAAE+G,GAAEgX,KAAIre,IAAGuF,GAAE8B,GAAEuX,GAAE,EAAEte,GAAE,EAAE,CAAC,MAAM,SAASoa,GAAEvkB,GAAE,CAAC,GAAGukB,KAAIvkB,GAAK,KAAK,cAAc,KAAKyoB,GAAEzoB,IAAG,GAAGoP,GAAE,UAAU,KAAKmV,IAAGkE,GAAEte,GAAE,EAAEnK,IAAG,EAAEyoB,GAAElE,MAAK,EAAEkE,GAAEte,GAAE,EAAEse,GAAE,EAAEte,IAAGoa,IAAGkE,GAAEA,IAAGzoB,EAAC,EAAE,MAAM,UAAU,CAACyoB,GAAE,GAAGrZ,GAAE,UAAUjF,EAAC,CAAC,CAAC,GAAGN,GAAE,MAAM7J,EAAEgoB,CAAC,EAAE,IAAIllB,GAAE,EAAE4lB,GAAE,OAAO,aAAaT,EAAEnlB,EAAC,CAAC,EAAE,IAAIA,IAAG,EAAEA,GAAEmlB,EAAE,QAAQ,CAAC,IAAI9kB,GAAE,OAAO,aAAa8kB,EAAEnlB,EAAC,CAAC,EAAEA,IAAG,EAAEjG,EAAE,SAAS6rB,GAAEvlB,EAAC,EAAEulB,IAAGvlB,IAAG0G,GAAE,MAAMhN,EAAE,QAAQ6rB,EAAC,EAAEV,CAAC,EAAEnrB,EAAE,KAAI,EAAG,OAAOA,EAAE,QAAQ,GAAGmrB,IAAIA,GAAG,GAAGnrB,EAAE,IAAI6rB,GAAEvlB,EAAC,GAAGulB,GAAEvlB,GAAE,CAAC,OAAO0G,GAAE,MAAMhN,EAAE,QAAQ6rB,EAAC,EAAEV,CAAC,EAAEne,GAAE,MAAMke,EAAEC,CAAC,EAAEne,GAAE,MAAK,EAAGqH,GAAE,YAAa,GAAE7G,EAAE,UAAU,CAAC,IAAIka,EAAE,GAAGvkB,EAAE,EAAE+nB,EAAE,CAAC,IAAI,SAASC,EAAE,CAAC,GAAGD,EAAE,SAASC,CAAC,EAAE,KAAK,WAAWA,EAAEzD,EAAEyD,CAAC,EAAEhoB,EAAEA,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,OAAOA,CAAC,EAAE,QAAQ,SAASA,EAAE,CAAC,OAAOukB,EAAEvkB,CAAC,CAAC,EAAE,SAAS,SAASA,EAAE,CAAC,OAAgBukB,EAAEvkB,CAAC,IAAZ,MAAa,CAAC,EAAE,OAAO+nB,CAAC,EAAE,OAAOlrB,CAAC,EAAE0nB,EAAEvkB,CAAC,EAAEioB,EAAE,EAAEA,EAAEjoB,EAAEioB,GAAG,EAAE,QAAQprB,GAAE,EAAEA,GAAE0nB,EAAE1nB,IAAG,EAAEmrB,EAAE,SAASnrB,GAAEorB,EAAEF,EAAElrB,GAAEorB,CAAC,CAAC,EAAE,IAAItmB,GAAEumB,GAAC,EAAGF,EAAE,MAAMrmB,EAAC,EAAE,QAAQ0I,GAAE,UAAU,CAAC,IAAIka,EAAE,EAAEvkB,EAAE,EAAE+nB,EAAE,EAAEC,EAAE,GAAGC,EAAE,GAAGprB,EAAE,SAAS0nB,EAAE,CAACyD,GAAG,OAAO,aAAarmB,EAAE,GAAG4iB,CAAC,CAAC,CAAC,EAAE5iB,EAAE,SAAS4iB,EAAE,CAAC,GAAG,EAAAA,EAAE,GAAO,CAAC,GAAGA,EAAE,GAAG,MAAO,IAAGA,EAAE,GAAGA,EAAE,GAAG,OAAOA,EAAE,GAAG,GAAG,GAAGA,EAAE,GAAG,OAAOA,EAAE,GAAG,GAAG,GAAOA,GAAJ,GAAM,MAAO,IAAG,GAAOA,GAAJ,GAAM,MAAO,GAAE,CAAC,KAAK,KAAKA,CAAC,EAAE,OAAO0D,EAAE,UAAU,SAASD,EAAE,CAAC,IAAIzD,EAAEA,GAAG,EAAE,IAAIyD,EAAEhoB,GAAG,EAAE+nB,GAAG,EAAE/nB,GAAG,GAAGnD,EAAE0nB,IAAIvkB,EAAE,CAAC,EAAEA,GAAG,CAAC,EAAEioB,EAAE,MAAM,UAAU,CAAC,GAAGjoB,EAAE,IAAInD,EAAE0nB,GAAG,EAAEvkB,CAAC,EAAEukB,EAAE,EAAEvkB,EAAE,GAAG+nB,EAAE,GAAG,EAAE,QAAQE,EAAE,EAAEF,EAAE,EAAEpmB,EAAE,EAAEA,EAAEsmB,EAAEtmB,GAAG,EAAEqmB,GAAG,GAAG,EAAEC,EAAE,SAAS,UAAU,CAAC,OAAOD,CAAC,EAAEC,CAAC,IAAI7Y,GAAEzN,GAAE,YAAW,EAAG8mB,GAAE,EAAEA,GAAErZ,GAAE,OAAOqZ,IAAG,EAAEpe,GAAE,UAAU+E,GAAEqZ,EAAC,CAAC,EAAE,OAAOpe,GAAE,QAAQ,yBAAyBA,EAAC,EAAE,OAAOka,CAAC,EAAG,EAAC0D,EAAE,mBAAmB,OAAO,EAAE,SAAS1D,EAAE,CAAC,OAAO,SAASA,EAAE,CAAC,QAAQvkB,EAAE,GAAG+nB,EAAE,EAAEA,EAAExD,EAAE,OAAOwD,IAAI,CAAC,IAAIC,EAAEzD,EAAE,WAAWwD,CAAC,EAAEC,EAAE,IAAIhoB,EAAE,KAAKgoB,CAAC,EAAEA,EAAE,KAAKhoB,EAAE,KAAK,IAAIgoB,GAAG,EAAE,IAAI,GAAGA,CAAC,EAAEA,EAAE,OAAOA,GAAG,MAAMhoB,EAAE,KAAK,IAAIgoB,GAAG,GAAG,IAAIA,GAAG,EAAE,GAAG,IAAI,GAAGA,CAAC,GAAGD,IAAIC,EAAE,QAAQ,KAAKA,IAAI,GAAG,KAAKzD,EAAE,WAAWwD,CAAC,GAAG/nB,EAAE,KAAK,IAAIgoB,GAAG,GAAG,IAAIA,GAAG,GAAG,GAAG,IAAIA,GAAG,EAAE,GAAG,IAAI,GAAGA,CAAC,EAAE,CAAC,OAAOhoB,CAAC,EAAEukB,CAAC,CAAC,GAAYyD,EAAc,OAAOD,EAAE,UAAU,CAAC,OAAOE,CAAC,IAAxC,WAA2CF,EAAE,MAAM/nB,EAAE,EAAE,EAAE+nB,KAArE,SAA0ExD,EAAE,QAAQyD,EAAE,EAAE,IAAI,CAACzD,EAAEvkB,EAAE+nB,IAAI,CAAcA,EAAE,EAAE/nB,EAAE,CAAC,QAAQ,IAAI6oB,EAAC,CAAC,EAAE,IAAIb,EAAE,UAAU,CAAC,OAAOA,EAAE,OAAO,QAAQ,SAASzD,EAAE,CAAC,QAAQvkB,EAAE+nB,EAAE,EAAEC,EAAE,UAAU,OAAOD,EAAEC,EAAED,IAAI,QAAQE,KAAKjoB,EAAE,UAAU+nB,CAAC,EAAE,OAAO,UAAU,eAAe,KAAK/nB,EAAEioB,CAAC,IAAI1D,EAAE0D,CAAC,EAAEjoB,EAAEioB,CAAC,GAAG,OAAO1D,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE0D,EAAE,UAAU,CAAC,QAAQ1D,EAAE,EAAEvkB,EAAE,EAAE+nB,EAAE,UAAU,OAAO/nB,EAAE+nB,EAAE/nB,IAAIukB,GAAG,UAAUvkB,CAAC,EAAE,OAAO,IAAIgoB,EAAE,MAAMzD,CAAC,EAAE0D,EAAE,EAAE,IAAIjoB,EAAE,EAAEA,EAAE+nB,EAAE/nB,IAAI,QAAQnD,EAAE,UAAUmD,CAAC,EAAE2B,EAAE,EAAE0I,EAAExN,EAAE,OAAO8E,EAAE0I,EAAE1I,IAAIsmB,IAAID,EAAEC,CAAC,EAAEprB,EAAE8E,CAAC,EAAE,OAAOqmB,CAAC,EAAEnrB,EAAE,SAAS0nB,EAAE,CAAC,MAAM,CAAC,CAACA,GAAa,OAAOA,GAAjB,UAAoB,CAAC,MAAM,QAAQA,CAAC,CAAC,EAAE,SAAS5iB,EAAE4iB,EAAE,CAAC,QAAQvkB,EAAE,GAAG+nB,EAAE,EAAEA,EAAE,UAAU,OAAOA,IAAI/nB,EAAE+nB,EAAE,CAAC,EAAE,UAAUA,CAAC,EAAE,GAAG,CAAC/nB,EAAE,OAAO,OAAOukB,EAAE,IAAIla,EAAErK,EAAE,QAAQ,OAAgBqK,IAAT,QAAYxN,EAAE0nB,CAAC,GAAG1nB,EAAEwN,CAAC,GAAGka,EAAEyD,EAAE,CAAE,EAACzD,CAAC,EAAE,OAAO,KAAKla,CAAC,EAAE,QAAS,SAASrK,EAAE,CAAC,IAAI+nB,EAAExD,EAAEvkB,CAAC,EAAEgoB,EAAE3d,EAAErK,CAAC,EAAE,MAAM,QAAQ+nB,CAAC,GAAG,MAAM,QAAQC,CAAC,EAAEzD,EAAEvkB,CAAC,EAAEgoB,EAAEnrB,EAAEkrB,CAAC,GAAGlrB,EAAEmrB,CAAC,EAAEzD,EAAEvkB,CAAC,EAAE2B,EAAE,OAAO,OAAO,GAAGomB,CAAC,EAAEC,CAAC,EAAEzD,EAAEvkB,CAAC,EAAEgoB,CAAC,GAAIrmB,EAAE,MAAM,OAAOsmB,EAAE,CAAC1D,CAAC,EAAEvkB,CAAC,CAAC,GAAGukB,CAAC,CAAC,SAASla,EAAEka,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAE,SAAS,cAAc,GAAG,EAAEA,EAAE,SAAS/nB,EAAE+nB,EAAE,KAAKxD,EAAE,SAAS,KAAK,YAAYwD,CAAC,EAAEA,EAAE,MAAK,EAAG,SAAS,KAAK,YAAYA,CAAC,CAAC,CAAC,SAAS3Y,EAAEmV,EAAE,CAAC,OAAOvkB,EAAE,KAAK+nB,EAAE,OAAOE,EAAE,UAAU,CAAC,OAAO,SAAS1D,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAEC,EAAEC,EAAEprB,EAAE8E,EAAE,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,GAAG,EAAEsmB,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAE,GAAE,OAAOprB,EAAE,CAAC,KAAKwN,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAc,OAAO,QAAnB,aAA4BxN,EAAE,OAAO,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,GAAGA,EAAE,SAASwN,EAAExN,GAAE,CAAC,OAAO,SAASwN,GAAE,CAAC,OAAO,SAASxN,GAAE,CAAC,GAAGkrB,EAAE,MAAM,IAAI,UAAU,iCAAiC,EAAE,KAAKpmB,GAAG,GAAG,CAAC,GAAGomB,EAAE,EAAEC,IAAIC,EAAE,EAAEprB,GAAE,CAAC,EAAEmrB,EAAE,OAAOnrB,GAAE,CAAC,EAAEmrB,EAAE,SAASC,EAAED,EAAE,SAASC,EAAE,KAAKD,CAAC,EAAE,GAAGA,EAAE,OAAO,EAAEC,EAAEA,EAAE,KAAKD,EAAEnrB,GAAE,CAAC,CAAC,GAAG,KAAK,OAAOorB,EAAE,OAAOD,EAAE,EAAEC,IAAIprB,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEorB,EAAE,KAAK,GAAGprB,GAAE,CAAC,EAAC,CAAE,IAAK,GAAE,IAAK,GAAEorB,EAAEprB,GAAE,MAAM,IAAK,GAAE,OAAO8E,EAAE,QAAQ,CAAC,MAAM9E,GAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAK,GAAE8E,EAAE,QAAQqmB,EAAEnrB,GAAE,CAAC,EAAEA,GAAE,CAAC,CAAC,EAAE,SAAS,IAAK,GAAEA,GAAE8E,EAAE,IAAI,MAAMA,EAAE,KAAK,IAAK,EAAC,SAAS,QAAQ,GAAG,GAAGsmB,GAAGA,EAAEtmB,EAAE,MAAM,OAAO,GAAGsmB,EAAEA,EAAE,OAAO,CAAC,IAAQprB,GAAE,CAAC,IAAP,GAAcA,GAAE,CAAC,IAAP,GAAU,CAAC8E,EAAE,EAAE,QAAQ,CAAC,GAAO9E,GAAE,CAAC,IAAP,IAAW,CAACorB,GAAGprB,GAAE,CAAC,EAAEorB,EAAE,CAAC,GAAGprB,GAAE,CAAC,EAAEorB,EAAE,CAAC,GAAG,CAACtmB,EAAE,MAAM9E,GAAE,CAAC,EAAE,KAAK,CAAC,GAAOA,GAAE,CAAC,IAAP,GAAU8E,EAAE,MAAMsmB,EAAE,CAAC,EAAE,CAACtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAEA,EAAEprB,GAAE,KAAK,CAAC,GAAGorB,GAAGtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAE,CAACtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAEtmB,EAAE,IAAI,KAAK9E,EAAC,EAAE,KAAK,CAACorB,EAAE,CAAC,GAAGtmB,EAAE,IAAI,IAAG,EAAGA,EAAE,KAAK,MAAM,QAAQ,CAAC9E,GAAEmD,EAAE,KAAKukB,EAAE5iB,CAAC,CAAC,OAAO4iB,GAAE,CAAC1nB,GAAE,CAAC,EAAE0nB,EAAC,EAAEyD,EAAE,CAAC,QAAC,CAAQD,EAAEE,EAAE,CAAC,CAAC,GAAG,EAAEprB,GAAE,CAAC,EAAE,MAAMA,GAAE,CAAC,EAAE,MAAM,CAAC,MAAMA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,CAACA,GAAEwN,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAM,SAASrK,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,QAAS,SAASA,EAAE,CAAC,IAAI+nB,EAAE,IAAI,eAAeA,EAAE,OAAO,UAAU,CAAC,IAAIxD,EAAE,IAAI,WAAWA,EAAE,UAAU,UAAU,CAACvkB,EAAEukB,EAAE,MAAM,CAAC,EAAEA,EAAE,cAAcwD,EAAE,QAAQ,CAAC,EAAEA,EAAE,KAAK,MAAMxD,CAAC,EAAEwD,EAAE,aAAa,OAAOA,EAAE,MAAM,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,KAAKC,EAAE,UAAUA,EAAE,UAAW,SAASzD,EAAE1nB,EAAE,CAAC,SAAS8E,EAAE4iB,EAAE,CAAC,GAAG,CAACnV,EAAE6Y,EAAE,KAAK1D,CAAC,CAAC,CAAC,OAAOA,EAAE,CAAC1nB,EAAE0nB,CAAC,CAAC,CAAC,CAAC,SAASla,EAAEka,EAAE,CAAC,GAAG,CAACnV,EAAE6Y,EAAE,MAAM1D,CAAC,CAAC,CAAC,OAAOA,EAAE,CAAC1nB,EAAE0nB,CAAC,CAAC,CAAC,CAAC,SAASnV,EAAEpP,EAAE,CAAC,IAAI+nB,EAAE/nB,EAAE,KAAKukB,EAAEvkB,EAAE,KAAK,GAAG+nB,EAAE/nB,EAAE,MAAM+nB,aAAaC,EAAED,EAAE,IAAIC,EAAG,SAASzD,EAAE,CAACA,EAAEwD,CAAC,CAAC,CAAC,GAAI,KAAKpmB,EAAE0I,CAAC,CAAC,CAAC+E,GAAG6Y,EAAEA,EAAE,MAAMjoB,EAAE+nB,GAAG,EAAE,GAAG,KAAI,CAAE,CAAC,GAAI,IAAI/nB,EAAE+nB,EAAEC,EAAEC,CAAC,CAAC,MAAMQ,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAIte,EAAE,UAAU,CAAC,OAAOA,EAAE,OAAO,QAAQ,SAASoa,EAAE,CAAC,QAAQvkB,EAAE+nB,EAAE,EAAEC,EAAE,UAAU,OAAOD,EAAEC,EAAED,IAAI,QAAQE,KAAKjoB,EAAE,UAAU+nB,CAAC,EAAE,OAAO,UAAU,eAAe,KAAK/nB,EAAEioB,CAAC,IAAI1D,EAAE0D,CAAC,EAAEjoB,EAAEioB,CAAC,GAAG,OAAO1D,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,MAAMrT,EAAE,UAAU,CAAC,SAASqT,EAAEA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,IAAIwD,EAAExD,EAAE,KAAK,KAAK,KAAKvkB,EAAE,KAAK,MAAM+nB,CAAC,CAAC,OAAOxD,EAAE,UAAU,KAAK,SAASA,EAAEvkB,EAAE+nB,EAAEC,EAAE,CAAC,IAAIC,EAAE,OAAO,KAAK,MAAK,CAAE,IAAI,OAAOA,EAAE,KAAK,SAAS,MAAM,IAAI,SAASA,EAAE,KAAK,YAAY,MAAM,IAAI,iBAAiBA,EAAE,KAAK,mBAAmB,MAAM,IAAI,UAAUA,EAAE,KAAK,aAAa,MAAM,IAAI,gBAAgBA,EAAE,KAAK,kBAAkB,MAAM,IAAI,SAAS,QAAQA,EAAE,KAAK,WAAW,CAACA,EAAE,KAAK,KAAK,CAAC,EAAE1D,EAAE,EAAEvkB,EAAE,KAAK+nB,EAAE,YAAYC,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,cAAc,SAASA,EAAE,CAAC,IAAIvkB,EAAE+nB,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,KAAK1nB,EAAE0nB,EAAE,SAAS5iB,EAAW9E,IAAT,OAAW,EAAEA,EAAEwN,EAAE0d,EAAEE,EAAE,EAAE7Y,EAAE4Y,EAAEC,EAAE,KAAK1D,EAAE,MAAI,GAAYvkB,EAAE,KAAK,YAAf,MAAmCA,IAAT,QAAYA,EAAE,aAAa,YAAY,UAAU,IAAI2B,EAAE,KAAK,GAAG,IAAI0I,EAAE,IAAI+E,EAAE,GAAG,CAAC,EAAEmV,EAAE,UAAU,UAAU,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcpa,EAAEA,EAAE,GAAGoa,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,QAAQ,EAAEA,EAAE,SAAS,aAAa,KAAK,OAAOgoB,EAAED,EAAE,CAAC,CAAC,EAAE/nB,EAAE,SAAS,aAAa,KAAK,OAAOioB,EAAEF,EAAE,CAAC,CAAC,EAAE/nB,EAAE,SAAS,aAAa,IAAI,OAAO+nB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,aAAa,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcpa,EAAEA,EAAE,GAAGoa,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,IAAI,OAAOgoB,CAAC,CAAC,EAAEhoB,EAAE,SAAS,aAAa,IAAI,OAAOioB,CAAC,CAAC,EAAEjoB,EAAE,SAAS,aAAa,QAAQ,OAAO+nB,CAAC,CAAC,EAAE/nB,EAAE,SAAS,aAAa,SAAS,OAAO+nB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,kBAAkB,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcpa,EAAEA,EAAE,GAAGoa,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,IAAI,KAAKgoB,EAAE,IAAIC,EAAE,KAAKF,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,IAAIA,EAAE,EAAE,gBAAgB,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,oBAAoB,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcpa,EAAEA,EAAE,GAAGoa,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,IAAI,KAAKgoB,EAAE,IAAIC,EAAE,KAAKF,EAAE,KAAKA,EAAE,KAAK,CAACA,EAAE,EAAE,KAAKA,EAAE,EAAE,IAAIA,EAAE,EAAE,cAAc,CAACA,EAAE,EAAE,IAAI,CAACA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,yBAAyB,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcpa,EAAEA,EAAE,GAAGoa,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,IAAI,KAAKgoB,EAAE,IAAIC,EAAE,KAAKF,EAAE,KAAKA,EAAE,KAAKA,EAAE,IAAIA,EAAE,cAAc,CAACA,EAAE,IAAI,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,qBAAqB,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcpa,EAAEA,EAAE,GAAGoa,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,IAAI,KAAKgoB,EAAE,IAAIC,EAAE,KAAKF,EAAE,EAAE,KAAKA,EAAE,EAAE,IAAIA,EAAE,EAAE,cAAcA,EAAE,EAAE,IAAIA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAK,CAACA,EAAE,EAAE,KAAKA,EAAE,EAAE,IAAIA,EAAE,EAAE,cAAc,CAACA,EAAE,EAAE,IAAI,CAACA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,SAAS,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK,KAAK,UAAU,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,YAAY,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK,KAAK,aAAa,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,aAAa,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,YAAY1nB,EAAEorB,EAAE,CAACA,EAAE,GAAG,CAAC,EAAE,EAAEtmB,EAAEsmB,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAE5d,EAAE4d,EAAE,CAACA,EAAE,EAAE,EAAE,EAAE,EAAE7Y,EAAE6Y,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAEQ,EAAE5rB,EAAE8E,EAAE0I,EAAE+E,EAAE,GAAOqZ,IAAJ,EAAM,GAAGA,EAAE,GAAG5rB,GAAG8E,GAAG0I,GAAG+E,EAAE,KAAK,aAAa,CAAC,EAAEpP,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,GAAOS,IAAJ,EAAM,CAAC,IAAIte,EAAE,EAAE,OAAOtN,GAAGwN,EAAEF,EAAE,KAAK,GAAG,EAAEE,GAAG1I,EAAEwI,EAAE,KAAK,GAAGxI,GAAGyN,IAAIjF,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,KAAK,oBAAoB,CAAC,EAAEnK,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS7d,CAAC,CAAC,CAAC,CAAC,GAAOse,IAAJ,EAAM,OAAOte,EAAE,EAAEE,EAAEF,EAAE,KAAK,GAAG,EAAExI,EAAEwI,EAAE,KAAK,GAAGiF,IAAIjF,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,KAAK,kBAAkB,CAAC,EAAEnK,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS7d,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,EAAEnK,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,kBAAkB,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,YAAY1nB,EAAEorB,EAAE,CAACA,EAAE,GAAG,CAAC,EAAE,EAAEtmB,EAAEsmB,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAE5d,EAAE4d,EAAE,CAACA,EAAE,EAAE,EAAE,EAAE,EAAE7Y,EAAE6Y,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAEQ,EAAE5rB,EAAE8E,EAAE0I,EAAE+E,EAAE,GAAOqZ,IAAJ,EAAM,GAAGA,EAAE,GAAG5rB,GAAG8E,GAAG0I,GAAG+E,EAAE,KAAK,aAAa,CAAC,EAAEpP,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,GAAOS,IAAJ,EAAM,CAAC,IAAIte,EAAE,EAAE,OAAOtN,GAAGwN,EAAEF,EAAE,KAAK,GAAG,EAAEE,GAAG1I,EAAEwI,EAAE,KAAK,GAAGxI,GAAGyN,IAAIjF,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,KAAK,yBAAyB,CAAC,EAAEnK,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS7d,CAAC,CAAC,CAAC,CAAC,GAAOse,IAAJ,EAAM,OAAOte,EAAE,EAAEE,EAAEF,EAAE,KAAK,GAAG,EAAExI,EAAEwI,EAAE,KAAK,GAAGiF,IAAIjF,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,KAAK,kBAAkB,CAAC,EAAEnK,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS7d,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,EAAEnK,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,YAAY,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,YAAY1nB,EAAEorB,EAAE,CAACA,EAAE,GAAG,CAAC,EAAE,EAAEtmB,EAAEsmB,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAE5d,EAAE4d,EAAE,CAACA,EAAE,EAAE,EAAE,EAAE,EAAE7Y,EAAE6Y,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAMprB,EAAE8E,EAAE0I,EAAE+E,IAAV,EAAYvS,GAAGwN,EAAE1I,GAAGyN,EAAE,KAAK,aAAa,CAAC,EAAEpP,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,EAAEhoB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,EAAEhoB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAC,EAAEhoB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,mBAAmB,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,YAAY1nB,EAAEorB,EAAE,CAACA,EAAE,GAAG,CAAC,EAAE,EAAEtmB,EAAEsmB,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAE5d,EAAE4d,EAAE,CAACA,EAAE,EAAE,EAAE,EAAE,EAAE7Y,EAAE6Y,EAAE,CAACA,EAAE,EAAE,CAAC,EAAE,EAAMprB,EAAE8E,EAAE0I,EAAE+E,IAAV,EAAYvS,GAAGwN,EAAE1I,GAAGyN,EAAE,KAAK,aAAa,CAAC,EAAEpP,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,yBAAyB,CAAC,EAAEhoB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,yBAAyB,CAAC,EAAEhoB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAC,EAAEhoB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,EAAEzD,CAAC,EAAG,EAAC,IAAI1a,EAAE,UAAU,CAAC,OAAOA,EAAE,OAAO,QAAQ,SAAS0a,EAAE,CAAC,QAAQvkB,EAAE+nB,EAAE,EAAEC,EAAE,UAAU,OAAOD,EAAEC,EAAED,IAAI,QAAQE,KAAKjoB,EAAE,UAAU+nB,CAAC,EAAE,OAAO,UAAU,eAAe,KAAK/nB,EAAEioB,CAAC,IAAI1D,EAAE0D,CAAC,EAAEjoB,EAAEioB,CAAC,GAAG,OAAO1D,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,MAAMzhB,EAAE,UAAU,CAAC,SAASyhB,EAAEA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,IAAIwD,EAAExD,EAAE,KAAK,KAAK,KAAKvkB,EAAE,KAAK,MAAM+nB,CAAC,CAAC,OAAOxD,EAAE,UAAU,KAAK,SAASA,EAAEvkB,EAAE+nB,EAAEC,EAAE,CAAC,IAAIC,EAAE,OAAO,KAAK,MAAK,CAAE,IAAI,SAASA,EAAE,KAAK,YAAY,MAAM,IAAI,gBAAgBA,EAAE,KAAK,kBAAkB,MAAM,IAAI,MAAM,QAAQA,EAAE,KAAK,QAAQ,CAACA,EAAE,KAAK,KAAK,CAAC,EAAE1D,EAAE,EAAEvkB,EAAE,KAAK+nB,EAAE,SAASC,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,cAAc,SAASA,EAAE,CAAC,IAAIvkB,EAAE+nB,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,KAAK1nB,EAAE0nB,EAAE,SAAS5iB,EAAW9E,IAAT,OAAW,EAAEA,EAAEwN,EAAE0d,EAAEE,EAAE,EAAE7Y,EAAE4Y,EAAEC,EAAE,KAAK1D,EAAE,SAAgBvkB,EAAE,KAAK,YAAf,MAAmCA,IAAT,QAAYA,EAAE,aAAa,YAAY,UAAU,IAAI2B,EAAE,KAAK,GAAG,IAAI0I,EAAE,IAAI+E,EAAE,GAAG,CAAC,EAAEmV,EAAE,UAAU,UAAU,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE1nB,EAAEkrB,EAAE,EAAE,KAAK,cAAcle,EAAEA,EAAE,GAAG0a,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,YAAY,SAAS,EAAEA,EAAE,SAAS,aAAa,IAAI,MAAMgoB,EAAED,EAAE,GAAG,IAAIE,EAAE,KAAKF,EAAE,EAAE,IAAIA,EAAE,EAAE,oBAAoBlrB,EAAE,MAAMkrB,EAAE,EAAElrB,GAAG,KAAKkrB,EAAE,EAAElrB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE0nB,EAAE,UAAU,aAAa,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE1nB,EAAEkrB,EAAE,EAAE,KAAK,cAAcle,EAAEA,EAAE,GAAG0a,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,YAAY,SAAS,EAAEA,EAAE,SAAS,aAAa,IAAI,KAAKgoB,EAAE,IAAIC,EAAE,KAAKF,EAAE,KAAKA,EAAE,KAAK,CAACA,EAAE,OAAOC,EAAEnrB,GAAG,KAAKorB,EAAEprB,GAAG,MAAMkrB,EAAE,EAAElrB,GAAG,MAAMkrB,EAAE,EAAElrB,GAAG,MAAM,EAAEA,EAAEkrB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,mBAAmB,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE1nB,EAAEkrB,EAAE,EAAE,KAAK,cAAcle,EAAEA,EAAE,GAAG0a,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,YAAY,SAAS,EAAEA,EAAE,SAAS,aAAa,IAAI,KAAKgoB,EAAE,KAAKC,EAAE,IAAIprB,GAAG,KAAK,EAAEA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAIA,EAAE,IAAI,IAAIA,EAAE,KAAK,EAAEA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAIA,EAAE,IAAI,IAAI,CAACA,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAI,CAACA,EAAE,IAAI,IAAI,CAACA,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAI,CAACA,EAAE,IAAI,IAAIA,EAAE,MAAMmrB,EAAE,IAAInrB,GAAG,KAAKorB,EAAEprB,GAAG,KAAK,EAAEA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAIA,EAAE,IAAI,IAAIA,EAAE,KAAK,EAAEA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAI,CAACA,EAAE,IAAI,IAAIA,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAI,CAACA,EAAE,IAAI,IAAI,CAACA,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,IAAI,IAAIA,EAAE,cAAc,IAAIA,EAAE,IAAI,IAAI,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE0nB,EAAE,UAAU,SAAS,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,SAAS,KAAK,UAAU,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAASC,CAAC,CAAC,CAAC,EAAE1D,EAAE,UAAU,YAAY,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,SAAS,KAAK,aAAa,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAASC,CAAC,CAAC,CAAC,EAAE1D,EAAE,UAAU,kBAAkB,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,SAAS,KAAK,mBAAmB,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAASC,CAAC,CAAC,CAAC,EAAE1D,CAAC,EAAG,EAAC,IAAImE,EAAE,UAAU,CAAC,OAAOA,EAAE,OAAO,QAAQ,SAASnE,EAAE,CAAC,QAAQvkB,EAAE+nB,EAAE,EAAEC,EAAE,UAAU,OAAOD,EAAEC,EAAED,IAAI,QAAQE,KAAKjoB,EAAE,UAAU+nB,CAAC,EAAE,OAAO,UAAU,eAAe,KAAK/nB,EAAEioB,CAAC,IAAI1D,EAAE0D,CAAC,EAAEjoB,EAAEioB,CAAC,GAAG,OAAO1D,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,MAAMphB,EAAE,UAAU,CAAC,SAASohB,EAAEA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,IAAIwD,EAAExD,EAAE,KAAK,KAAK,KAAKvkB,EAAE,KAAK,MAAM+nB,CAAC,CAAC,OAAOxD,EAAE,UAAU,KAAK,SAASA,EAAEvkB,EAAE+nB,EAAEC,EAAE,CAAC,IAAIC,EAAE,OAAO,KAAK,MAAK,CAAE,IAAI,SAASA,EAAE,KAAK,YAAY,MAAM,IAAI,MAAM,QAAQA,EAAE,KAAK,QAAQ,CAACA,EAAE,KAAK,KAAK,CAAC,EAAE1D,EAAE,EAAEvkB,EAAE,KAAK+nB,EAAE,SAASC,CAAC,CAAC,CAAC,EAAEzD,EAAE,UAAU,cAAc,SAASA,EAAE,CAAC,IAAIvkB,EAAE+nB,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,KAAK1nB,EAAE0nB,EAAE,SAAS5iB,EAAW9E,IAAT,OAAW,EAAEA,EAAEwN,EAAE0d,EAAEE,EAAE,EAAE7Y,EAAE4Y,EAAEC,EAAE,KAAK1D,EAAE,MAAI,GAAYvkB,EAAE,KAAK,YAAf,MAAmCA,IAAT,QAAYA,EAAE,aAAa,YAAY,UAAU,IAAI2B,EAAE,KAAK,GAAG,IAAI0I,EAAE,IAAI+E,EAAE,GAAG,CAAC,EAAEmV,EAAE,UAAU,UAAU,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcmE,EAAEA,EAAE,GAAGnE,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,QAAQ,EAAEA,EAAE,SAAS,aAAa,KAAK,OAAOgoB,EAAED,EAAE,CAAC,CAAC,EAAE/nB,EAAE,SAAS,aAAa,KAAK,OAAOioB,EAAEF,EAAE,CAAC,CAAC,EAAE/nB,EAAE,SAAS,aAAa,IAAI,OAAO+nB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,aAAa,SAASA,EAAE,CAAC,IAAIvkB,EAAE,KAAK+nB,EAAExD,EAAE,KAAKyD,EAAEzD,EAAE,EAAE0D,EAAE1D,EAAE,EAAE,KAAK,cAAcmE,EAAEA,EAAE,CAAE,EAACnE,CAAC,EAAE,CAAC,KAAK,UAAU,CAACvkB,EAAE,SAAS,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,EAAE,SAAS,aAAa,IAAI,OAAOgoB,CAAC,CAAC,EAAEhoB,EAAE,SAAS,aAAa,IAAI,OAAOioB,CAAC,CAAC,EAAEjoB,EAAE,SAAS,aAAa,QAAQ,OAAO+nB,CAAC,CAAC,EAAE/nB,EAAE,SAAS,aAAa,SAAS,OAAO+nB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,UAAU,SAAS,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,SAAS,KAAK,UAAU,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAASC,CAAC,CAAC,CAAC,EAAE1D,EAAE,UAAU,YAAY,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,EAAEwD,EAAExD,EAAE,EAAEyD,EAAEzD,EAAE,KAAK0D,EAAE1D,EAAE,SAAS,KAAK,aAAa,CAAC,EAAEvkB,EAAE,EAAE+nB,EAAE,KAAKC,EAAE,SAASC,CAAC,CAAC,CAAC,EAAE1D,CAAC,EAAC,EAAG2D,EAAE,SAAS,IAAIC,EAAE,SAAS5D,EAAEvkB,EAAE+nB,EAAEC,EAAE,CAAC,OAAO,IAAID,IAAIA,EAAE,UAAW,SAASE,EAAEprB,EAAE,CAAC,SAAS8E,EAAE4iB,EAAE,CAAC,GAAG,CAACnV,EAAE4Y,EAAE,KAAKzD,CAAC,CAAC,CAAC,OAAOA,EAAE,CAAC1nB,EAAE0nB,CAAC,CAAC,CAAC,CAAC,SAASla,EAAEka,EAAE,CAAC,GAAG,CAACnV,EAAE4Y,EAAE,MAAMzD,CAAC,CAAC,CAAC,OAAOA,EAAE,CAAC1nB,EAAE0nB,CAAC,CAAC,CAAC,CAAC,SAASnV,EAAEmV,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,KAAK0D,EAAE1D,EAAE,KAAK,GAAGvkB,EAAEukB,EAAE,MAAMvkB,aAAa+nB,EAAE/nB,EAAE,IAAI+nB,EAAG,SAASxD,EAAE,CAACA,EAAEvkB,CAAC,CAAC,CAAG,GAAE,KAAK2B,EAAE0I,CAAC,CAAC,CAAC+E,GAAG4Y,EAAEA,EAAE,MAAMzD,EAAEvkB,GAAG,CAAE,IAAG,KAAI,CAAE,CAAC,CAAC,CAAE,EAAE2oB,EAAE,SAASpE,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAEC,EAAEC,EAAEprB,EAAE8E,EAAE,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,GAAG,EAAEsmB,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,OAAOprB,EAAE,CAAC,KAAKwN,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAc,OAAO,QAAnB,aAA4BxN,EAAE,OAAO,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,GAAGA,EAAE,SAASwN,EAAExN,EAAE,CAAC,OAAO,SAASwN,EAAE,CAAC,OAAO,SAASxN,EAAE,CAAC,GAAGkrB,EAAE,MAAM,IAAI,UAAU,iCAAiC,EAAE,KAAKpmB,GAAG,GAAG,CAAC,GAAGomB,EAAE,EAAEC,IAAIC,EAAE,EAAEprB,EAAE,CAAC,EAAEmrB,EAAE,OAAOnrB,EAAE,CAAC,EAAEmrB,EAAE,SAASC,EAAED,EAAE,SAASC,EAAE,KAAKD,CAAC,EAAE,GAAGA,EAAE,OAAO,EAAEC,EAAEA,EAAE,KAAKD,EAAEnrB,EAAE,CAAC,CAAC,GAAG,KAAK,OAAOorB,EAAE,OAAOD,EAAE,EAAEC,IAAIprB,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEorB,EAAE,KAAK,GAAGprB,EAAE,CAAC,EAAG,KAAK,GAAE,IAAK,GAAEorB,EAAEprB,EAAE,MAAM,IAAK,GAAE,OAAO8E,EAAE,QAAQ,CAAC,MAAM9E,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAK,GAAE8E,EAAE,QAAQqmB,EAAEnrB,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,SAAS,IAAK,GAAEA,EAAE8E,EAAE,IAAI,IAAK,EAACA,EAAE,KAAK,IAAG,EAAG,SAAS,QAAQ,GAAG,GAAGsmB,GAAGA,EAAEtmB,EAAE,MAAM,OAAO,GAAGsmB,EAAEA,EAAE,OAAO,CAAC,IAAQprB,EAAE,CAAC,IAAP,GAAcA,EAAE,CAAC,IAAP,GAAU,CAAC8E,EAAE,EAAE,QAAQ,CAAC,GAAO9E,EAAE,CAAC,IAAP,IAAW,CAACorB,GAAGprB,EAAE,CAAC,EAAEorB,EAAE,CAAC,GAAGprB,EAAE,CAAC,EAAEorB,EAAE,CAAC,GAAG,CAACtmB,EAAE,MAAM9E,EAAE,CAAC,EAAE,KAAK,CAAC,GAAOA,EAAE,CAAC,IAAP,GAAU8E,EAAE,MAAMsmB,EAAE,CAAC,EAAE,CAACtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAEA,EAAEprB,EAAE,KAAK,CAAC,GAAGorB,GAAGtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAE,CAACtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAEtmB,EAAE,IAAI,KAAK9E,CAAC,EAAE,KAAK,CAACorB,EAAE,CAAC,GAAGtmB,EAAE,IAAI,IAAG,EAAGA,EAAE,KAAK,MAAM,QAAQ,CAAC9E,EAAEmD,EAAE,KAAKukB,EAAE5iB,CAAC,CAAC,OAAO4iB,EAAE,CAAC1nB,EAAE,CAAC,EAAE0nB,CAAC,EAAEyD,EAAE,CAAC,QAAC,CAAQD,EAAEE,EAAE,CAAC,CAAC,GAAG,EAAEprB,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,MAAM,CAAC,MAAMA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,CAACA,EAAEwN,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEuG,GAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEhP,GAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAMyP,GAAE,UAAU,CAAC,SAASkT,EAAEA,EAAE,CAAC,KAAK,SAAS,SAAS,gBAAgB,6BAA6B,KAAK,EAAE,KAAK,SAAS,aAAa,QAAQ,OAAOA,EAAE,KAAK,CAAC,EAAE,KAAK,SAAS,aAAa,SAAS,OAAOA,EAAE,MAAM,CAAC,EAAE,KAAK,MAAM,SAAS,gBAAgB,6BAA6B,MAAM,EAAE,KAAK,SAAS,YAAY,KAAK,KAAK,EAAE,KAAK,SAASA,CAAC,CAAC,OAAO,OAAO,eAAeA,EAAE,UAAU,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,KAAK,EAAE,WAAW,GAAG,aAAa,EAAE,CAAC,EAAE,OAAO,eAAeA,EAAE,UAAU,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAAC,EAAEA,EAAE,UAAU,WAAW,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAEA,EAAE,UAAU,OAAO,SAASA,EAAE,CAAC,OAAO4D,EAAE,KAAK,OAAO,OAAQ,UAAU,CAAC,IAAInoB,EAAE+nB,EAAEC,EAAEC,EAAEprB,EAAE8E,EAAE0I,EAAE+E,EAAEjF,EAAE+G,EAAErH,EAAE,KAAK,OAAO8e,EAAE,KAAM,SAAS7lB,GAAE,CAAC,OAAOA,GAAE,MAAO,KAAK,GAAE,OAAO9C,EAAEukB,EAAE,iBAAiBwD,EAAE,KAAK,IAAI,KAAK,SAAS,MAAM,KAAK,SAAS,MAAM,EAAE,EAAE,KAAK,SAAS,OAAOC,EAAE,KAAK,SAAS,QAAQE,EAAEH,EAAE,KAAK,KAAK,CAAC,EAAEA,EAAEE,EAAE,KAAK,MAAMD,EAAEhoB,CAAC,EAAEnD,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI0nB,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,KAAK,UAAW,GAAE,CAAC,EAAE,CAAC,EAAE,IAAK,GAAE,GAAGzhB,GAAE,KAAI,EAAG,CAAC,KAAK,OAAO,MAAM,CAAC,CAAC,EAAEnB,EAAE,KAAK,SAAS0I,EAAE1I,EAAE,aAAayN,EAAEzN,EAAE,UAAUwI,EAAEE,EAAE,UAAUoe,EAAErZ,EAAE,oBAAoB,EAAE8B,EAAE,KAAK,MAAM/G,EAAEnK,EAAEA,CAAC,EAAEnD,EAAE,SAAS0nB,GAAE,CAAC,IAAIvkB,GAAEukB,GAAE,eAAewD,GAAExD,GAAE,cAAcyD,GAAEzD,GAAE,cAAc0D,GAAE1D,GAAE,kBAAkB1nB,GAAE0nB,GAAE,QAAQ5iB,GAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE0I,GAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGrK,IAAG,GAAG+nB,IAAG,GAAGC,IAAG,GAAGnrB,IAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIuS,GAAEpP,GAAE+nB,GAAE,OAAOpmB,GAAE,EAAE,KAAK,MAAM,KAAK,KAAKqmB,GAAE5Y,EAAC,CAAC,EAAEzN,GAAE,GAAG,IAAIA,GAAE,EAAE,GAAGsmB,IAAGA,GAAEtmB,GAAE,IAAIA,GAAE,EAAEsmB,IAAGtmB,GAAE,EAAE,GAAG,GAAGA,GAAE,IAAI0I,GAAE,EAAE1I,GAAE,EAAE9E,GAAE8E,GAAE,EAAE,EAAE,EAAE,KAAK,MAAMA,GAAE,EAAEyN,GAAE,GAAG,CAAC,EAAE/E,GAAE,EAAE,KAAK,MAAMA,GAAE,EAAE+E,EAAC,GAAGzN,GAAE,EAAEA,GAAE,EAAEqmB,IAAGC,IAAGA,GAAEtmB,GAAE,KAAKsmB,IAAGA,GAAEtmB,GAAE,GAAGA,GAAE,EAAEsmB,GAAEtmB,GAAE,EAAE,GAAG,GAAGA,GAAE,KAAKA,GAAE,GAAG,EAAE0I,GAAE,EAAE1I,GAAE,EAAE9E,GAAE8E,GAAE,EAAE,EAAE,EAAE,KAAK,MAAMA,GAAE,EAAEyN,GAAE,GAAG,CAAC,EAAE/E,GAAE,EAAE,KAAK,MAAMA,GAAE,EAAE+E,EAAC,GAAG,CAAC,OAAO/E,GAAE,EAAE,MAAMA,GAAE,EAAE,UAAU1I,GAAE,EAAE,UAAUA,GAAE,CAAC,CAAC,EAAE,CAAC,cAAc,KAAK,OAAO,MAAM,eAAe,KAAK,OAAO,OAAO,cAAcuP,EAAE,kBAAkBlR,EAAE,GAAG,QAAQioB,CAAC,CAAC,EAAEnlB,GAAE,MAAM,EAAE,IAAK,GAAE,OAAO,KAAK,eAAgB,EAAC,KAAK,SAAU,SAASyhB,GAAEwD,GAAE,CAAC,IAAIC,GAAEC,GAAEtmB,GAAE0I,GAAE+E,GAAEqZ,GAAE,MAAM,EAAE5e,EAAE,SAAS,aAAa,oBAAoB0a,KAAIvkB,EAAEnD,EAAE,WAAW,GAAG0nB,IAAGvkB,EAAEnD,EAAE,WAAW,GAAGkrB,KAAI/nB,EAAEnD,EAAE,WAAW,GAAGkrB,IAAG/nB,EAAEnD,EAAE,WAAW,GAAI,GAAQmrB,GAAEpX,GAAE2T,EAAC,KAAb,MAA0ByD,KAAT,SAAkBA,GAAED,EAAC,GAAK,GAAQE,GAAErX,GAAE2T,GAAEvkB,EAAE,CAAC,KAAjB,MAA8BioB,KAAT,SAAkBA,GAAEF,EAAC,GAAK,GAAQpmB,GAAEiP,GAAE2T,EAAC,KAAb,MAA0B5iB,KAAT,SAAkBA,GAAEomB,GAAE/nB,EAAE,CAAC,GAAK,GAAQqK,GAAEzI,GAAE2iB,EAAC,KAAb,MAA0Bla,KAAT,SAAkBA,GAAE0d,EAAC,GAAK,GAAQ3Y,GAAExN,GAAE2iB,GAAEvkB,EAAE,CAAC,KAAjB,MAA8BoP,KAAT,SAAkBA,GAAE2Y,EAAC,GAAK,GAAQU,GAAE7mB,GAAE2iB,EAAC,KAAb,MAA0BkE,KAAT,SAAkBA,GAAEV,GAAE/nB,EAAE,CAAC,EAAG,CAAG,EAAC,KAAK,cAAc,KAAK,SAAS,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,MAAMnD,EAAE,MAAM,OAAOA,EAAE,OAAO,MAAMmD,EAAE,QAAQioB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAK,GAAEnlB,GAAE,KAAI,EAAGA,GAAE,MAAM,EAAE,IAAK,GAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAG,CAAC,CAAE,EAAEyhB,EAAE,UAAU,eAAe,UAAU,CAAC,IAAIA,EAAEvkB,EAAE+nB,EAAEC,EAAE,KAAK,SAASC,EAAE,KAAK,SAAS,GAAGD,EAAE,CAAC,IAAInrB,GAAU0nB,EAAE0D,EAAE,qBAAZ,MAAyC1D,IAAT,OAAW,OAAOA,EAAE,SAAS5iB,GAAU3B,EAAEioB,EAAE,qBAAZ,MAAyCjoB,IAAT,OAAW,OAAOA,EAAE,MAAM,IAAInD,GAAG8E,IAAI,KAAK,aAAa,CAAC,QAAQ9E,EAAE,MAAM8E,EAAE,mBAAmB,EAAE,EAAE,EAAE,EAAE,EAAE,OAAOsmB,EAAE,OAAO,MAAMA,EAAE,MAAM,KAAK,kBAAkB,CAAC,GAAUF,EAAEE,EAAE,qBAAZ,MAAyCF,IAAT,OAAW,OAAOA,EAAE,MAAM,CAAC,IAAI1d,EAAE,KAAK,IAAI4d,EAAE,MAAMA,EAAE,MAAM,EAAE7Y,EAAE,SAAS,gBAAgB,6BAA6B,MAAM,EAAE,KAAK,oBAAoB,SAAS,gBAAgB,6BAA6B,UAAU,EAAE,KAAK,oBAAoB,aAAa,KAAK,4BAA4B,EAAE,KAAK,MAAM,YAAY,KAAK,mBAAmB,EAAEA,EAAE,aAAa,IAAI,QAAQ6Y,EAAE,MAAM5d,GAAG,CAAC,CAAC,EAAE+E,EAAE,aAAa,IAAI,QAAQ6Y,EAAE,OAAO5d,GAAG,CAAC,CAAC,EAAE+E,EAAE,aAAa,QAAQ,OAAO/E,CAAC,CAAC,EAAE+E,EAAE,aAAa,SAAS,OAAO/E,CAAC,CAAC,EAAE+E,EAAE,aAAa,KAAK,OAAO/E,EAAE,EAAE4d,EAAE,kBAAkB,KAAK,CAAC,EAAE,KAAK,oBAAoB,YAAY7Y,CAAC,CAAC,CAAC,CAAC,EAAEmV,EAAE,UAAU,SAAS,SAASA,EAAE,CAAC,IAAIvkB,EAAE+nB,EAAEC,EAAE,KAAK,GAAG,CAAC,KAAK,IAAI,KAAK,yBAAyB,IAAIC,EAAE,KAAK,SAASprB,EAAE,KAAK,IAAI,eAAgB,EAAC,GAAGA,EAAEorB,EAAE,OAAOprB,EAAEorB,EAAE,OAAO,KAAK,2BAA2B,IAAItmB,EAAE,KAAK,IAAIsmB,EAAE,MAAMA,EAAE,MAAM,EAAE,EAAEA,EAAE,OAAO5d,EAAE4d,EAAE,QAAQC,EAAEvmB,EAAE,KAAK,KAAK,CAAC,EAAEA,EAAEyN,EAAE,KAAK,MAAM/E,EAAExN,CAAC,EAAE4rB,EAAE,KAAK,OAAOR,EAAE,MAAMprB,EAAEuS,GAAG,CAAC,EAAEjF,EAAE,KAAK,OAAO8d,EAAE,OAAOprB,EAAEuS,GAAG,CAAC,EAAEvF,EAAE,IAAIqH,EAAE,CAAC,IAAI,KAAK,SAAS,KAAK+W,EAAE,YAAY,IAAI,CAAC,EAAE,KAAK,cAAc,SAAS,gBAAgB,6BAA6B,UAAU,EAAE,KAAK,cAAc,aAAa,KAAK,qBAAqB,EAAE,KAAK,MAAM,YAAY,KAAK,aAAa,EAAE,KAAK,aAAa,CAAC,SAAgBjoB,EAAEioB,EAAE,eAAZ,MAAmCjoB,IAAT,OAAW,OAAOA,EAAE,SAAS,MAAMioB,EAAE,YAAY,MAAM,mBAAmB,EAAE,EAAE,EAAE,EAAE,EAAE,OAAOA,EAAE,OAAO,MAAMA,EAAE,MAAM,KAAK,WAAW,CAAC,EAAE,QAAQnlB,GAAE,SAAS9C,GAAE,CAAC,QAAQioB,GAAE,SAASA,GAAE,CAAC,OAAO1D,GAAG,CAACA,EAAEvkB,GAAEioB,EAAC,EAAE,WAAY,GAAQF,EAAEW,GAAE,OAAZ,MAA2BX,IAAT,SAAkBA,EAAE,OAAO/nB,GAAEioB,EAAC,GAAIpe,EAAE,KAAK4e,EAAEzoB,GAAEoP,EAAEjF,EAAE8d,GAAE7Y,EAAEA,EAAG,SAAS2Y,GAAEpmB,GAAE,CAAC,MAAM,EAAE3B,GAAE+nB,GAAE,GAAGE,GAAEtmB,GAAE,GAAG3B,GAAE+nB,IAAGlrB,GAAGorB,GAAEtmB,IAAG9E,IAAI,EAAE0nB,GAAG,CAACA,EAAEvkB,GAAE+nB,GAAEE,GAAEtmB,EAAC,IAAI,CAAC,CAACqmB,EAAE,KAAKA,EAAE,IAAI,OAAOhoB,GAAE+nB,GAAEE,GAAEtmB,EAAC,CAAC,CAAG,EAAC,KAAKkI,EAAE,UAAU6e,GAAE,eAAeA,GAAE,cAAc,YAAY7e,EAAE,QAAQ,IAAI,UAAU,EAAElI,GAAE,EAAEA,GAAE9E,EAAE8E,KAAIsmB,GAAEtmB,EAAC,CAAC,EAAE+mB,GAAE,KAAKvlB,GAAE,EAAEA,GAAEtG,EAAEsG,KAAIL,GAAEK,EAAC,EAAE,GAAG8kB,EAAE,QAAQC,EAAE,CAAC,IAAIC,GAAE,KAAK,OAAOxmB,EAAEyN,EAAEvS,GAAG,CAAC,EAAE8rB,GAAE9rB,EAAE,EAAEsrB,GAAEvX,GAAE6X,EAAEN,GAAE/Y,EAAExN,GAAEuI,EAAEge,GAAE/Y,EAAEiC,GAAE,GAAG+W,GAAE,KAAK,MAAMO,GAAE,CAAC,EAAE,IAAIxlB,GAAE,EAAEA,GAAEwlB,GAAExlB,KAAI,CAACkO,GAAElO,EAAC,EAAE,GAAG,QAAQmlB,GAAE,EAAEA,GAAEK,GAAEL,KAAInlB,IAAGglB,GAAE,GAAGhlB,IAAGwlB,GAAER,IAAGG,IAAGH,GAAE,GAAGG,IAAGK,GAAER,IAAG,KAAK,MAAMhlB,GAAEilB,KAAIjlB,GAAEilB,KAAIE,GAAEF,KAAIE,GAAEF,GAAE,EAAEA,GAAE/W,GAAElO,EAAC,EAAEmlB,EAAC,EAAE,EAAEjX,GAAElO,EAAC,EAAEmlB,EAAC,EAAE,KAAK,IAAI,OAAOA,GAAE,EAAEH,GAAE,EAAEG,GAAEA,IAAGzrB,EAAEyrB,GAAE,EAAEH,GAAEG,GAAEH,GAAEhlB,GAAE,EAAEglB,GAAE,EAAEhlB,GAAEA,IAAGtG,EAAEsG,GAAE,EAAEglB,GAAEhlB,GAAEglB,EAAC,EAAE,EAAE,CAAC,CAAC,IAAIE,GAAE,SAAS9D,GAAE,CAAC,QAAQvkB,GAAE,SAASA,GAAE,CAAC,GAAG,CAACqR,GAAEkT,EAAC,EAAEvkB,EAAC,EAAE,MAAM,WAAW6J,EAAE,KAAK+G,GAAE2T,GAAEnV,EAAExN,GAAE5B,GAAEoP,EAAEA,EAAG,SAAS2Y,GAAEC,GAAE,CAAC,IAAIC,GAAE,MAAM,CAAC,EAAE,GAAQA,GAAE5W,GAAEkT,GAAEwD,EAAC,KAAf,MAA4BE,KAAT,SAAkBA,GAAEjoB,GAAEgoB,EAAC,EAAE,CAAC,EAAGne,EAAE,UAAU2e,GAAE,eAAeA,GAAE,cAAc,YAAY3e,EAAE,QAAQ,CAAC,EAAEke,GAAE,EAAEA,GAAEY,GAAEZ,KAAI/nB,GAAE+nB,EAAC,CAAC,EAAES,GAAE,KAAK,IAAIrlB,GAAE,EAAEA,GAAEwlB,GAAExlB,KAAIklB,GAAEllB,EAAC,CAAC,CAAC,EAAEohB,EAAE,UAAU,YAAY,UAAU,CAAC,IAAIA,EAAE,KAAK,GAAG,CAAC,KAAK,IAAI,KAAK,yBAAyB,IAAIvkB,EAAE,KAAK,SAAS+nB,EAAE,KAAK,SAAS,GAAG,CAAC/nB,EAAE,KAAK,8BAA8B,IAAIgoB,EAAE,KAAK,IAAI,eAAc,EAAGC,EAAE,KAAK,IAAIF,EAAE,MAAMA,EAAE,MAAM,EAAE,EAAEA,EAAE,OAAOlrB,EAAEkrB,EAAE,QAAQG,EAAED,EAAE,KAAK,KAAK,CAAC,EAAEA,EAAEtmB,EAAE,KAAK,MAAM9E,EAAEmrB,CAAC,EAAE3d,EAAE,EAAE1I,EAAEyN,EAAE,EAAEzN,EAAE8mB,EAAE,KAAK,OAAOV,EAAE,MAAMC,EAAErmB,GAAG,CAAC,EAAEwI,EAAE,KAAK,OAAO4d,EAAE,OAAOC,EAAErmB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAS,SAAS3B,EAAE,CAAC,IAAIioB,GAAEprB,GAAEgN,GAAE6e,GAAER,GAAEC,GAAEQ,GAAEtX,GAAE+W,GAAEE,GAAED,GAAEG,GAAED,GAAEvoB,EAAE,CAAC,EAAE4oB,GAAE5oB,EAAE,CAAC,EAAE8oB,GAAE9oB,EAAE,CAAC,EAAE+oB,GAAEN,EAAEF,GAAE5mB,GAAGqmB,EAAE,GAAGxP,GAAErO,EAAEye,GAAEjnB,GAAGqmB,EAAE,GAAGgB,GAAEzE,EAAE,cAAc0E,GAAE1E,EAAE,cAAc,IAAK,GAAQ0D,GAAEF,EAAE,wBAAZ,MAA4CE,KAAT,SAAkBA,GAAE,UAAY,GAAQprB,GAAEkrB,EAAE,wBAAZ,MAA4ClrB,KAAT,SAAkBA,GAAE,UAAWmsB,GAAE,SAAS,gBAAgB,6BAA6B,UAAU,GAAG,aAAa,KAAK,kCAAkCT,GAAE,IAAIK,EAAC,EAAErE,EAAE,MAAM,YAAYyE,EAAC,EAAEzE,EAAE,uBAAuBA,EAAE,oBAAoB0E,GAAED,GAAEzE,EAAE,aAAa,CAAC,SAAgB1a,GAAEke,EAAE,wBAAZ,MAA4Cle,KAAT,OAAW,OAAOA,GAAE,SAAS,OAAc6e,GAAEX,EAAE,wBAAZ,MAA4CW,KAAT,OAAW,OAAOA,GAAE,MAAM,mBAAmBI,GAAE,EAAEC,GAAE,EAAEvQ,GAAE,OAAOnO,EAAE,MAAMA,EAAE,KAAK,wBAAwBke,GAAE,IAAIK,EAAC,CAAC,IAAWV,GAAEH,EAAE,wBAAZ,MAA4CG,KAAT,OAAW,OAAOA,GAAE,KAAK,CAAC,IAAIW,GAAE,IAAI/lB,EAAE,CAAC,IAAIyhB,EAAE,SAAS,KAAKwD,EAAE,qBAAqB,IAAI,CAAC,EAAEc,GAAE,KAAKE,GAAEvQ,GAAEnO,EAAEye,EAAC,EAAED,GAAE,UAAUG,IAAGA,GAAE,YAAYH,GAAE,QAAQ,CAAC,KAAM,SAAQK,GAAE,IAAIhY,EAAE,CAAC,IAAIqT,EAAE,SAAS,KAAKwD,EAAE,YAAY,IAAI,CAAC,EAAEoB,GAAE,SAAS5E,GAAE,CAAC,QAAQvkB,GAAE,SAASA,GAAE,CAAC,GAAG,EAAE,GAAQmoB,GAAEvX,GAAE2T,EAAC,KAAb,MAA0B4D,KAAT,SAAkBA,GAAEnoB,EAAC,GAAG,MAAM,WAAWkpB,GAAE,KAAKH,GAAExE,GAAE5iB,EAAE6W,GAAExY,GAAE2B,EAAEA,EAAG,SAASomB,GAAEC,GAAE,CAAC,IAAIC,GAAE,MAAM,CAAC,EAAE,GAAQA,GAAErX,GAAE2T,GAAEwD,EAAC,KAAf,MAA4BE,KAAT,SAAkBA,GAAEjoB,GAAEgoB,EAAC,EAAE,CAAC,EAAGkB,GAAE,UAAUF,IAAGA,GAAE,YAAYE,GAAE,QAAQ,CAAC,EAAEnB,GAAE,EAAEA,GAAEnX,GAAE2T,EAAC,EAAE,OAAOwD,KAAI/nB,GAAE+nB,EAAC,CAAC,EAAEqB,GAAE,EAAEA,GAAExY,GAAE,OAAOwY,KAAID,GAAEC,EAAC,EAAE,IAAK,GAAQT,GAAEZ,EAAE,qBAAZ,MAAyCY,KAAT,SAAkBA,GAAE,UAAY,GAAQtX,GAAE0W,EAAE,qBAAZ,MAAyC1W,KAAT,SAAkBA,GAAE,UAAW4X,GAAE,SAAS,gBAAgB,6BAA6B,UAAU,GAAG,aAAa,KAAK,+BAA+BV,GAAE,IAAIK,EAAC,EAAErE,EAAE,MAAM,YAAY0E,EAAC,EAAE1E,EAAE,oBAAoB0E,GAAE1E,EAAE,aAAa,CAAC,SAAgB6D,GAAEL,EAAE,qBAAZ,MAAyCK,KAAT,OAAW,OAAOA,GAAE,SAAS,OAAcE,GAAEP,EAAE,qBAAZ,MAAyCO,KAAT,OAAW,OAAOA,GAAE,MAAM,mBAAmBQ,GAAE,EAAEC,GAAE,EAAEpnB,EAAE,EAAE6W,GAAE,EAAE7W,EAAE,OAAOyN,EAAE,MAAMA,EAAE,KAAK,qBAAqBmZ,GAAE,IAAIK,EAAC,CAAC,IAAWP,GAAEN,EAAE,qBAAZ,MAAyCM,KAAT,OAAW,OAAOA,GAAE,KAAK,CAAC,IAAIgB,GAAE,IAAIlmB,EAAE,CAAC,IAAIohB,EAAE,SAAS,KAAKwD,EAAE,kBAAkB,IAAI,CAAC,EAAEsB,GAAE,KAAKN,GAAE,EAAEpnB,EAAE6W,GAAE,EAAE7W,EAAEyN,EAAE0Z,EAAC,EAAEO,GAAE,UAAUJ,IAAGA,GAAE,YAAYI,GAAE,QAAQ,CAAC,KAAK,CAACH,GAAE,IAAIhY,EAAE,CAAC,IAAIqT,EAAE,SAAS,KAAKwD,EAAE,YAAY,IAAI,CAAC,EAAE,IAAIuB,GAAE,SAAS/E,GAAE,CAAC,QAAQvkB,GAAE,SAASA,GAAE,CAAC,GAAG,EAAE,GAAQwoB,GAAE5mB,GAAE2iB,EAAC,KAAb,MAA0BiE,KAAT,SAAkBA,GAAExoB,EAAC,GAAG,MAAM,WAAWkpB,GAAE,KAAKH,GAAExE,GAAE5iB,EAAE6W,GAAExY,GAAE2B,EAAEA,EAAG,SAASomB,GAAEC,GAAE,CAAC,IAAIC,GAAE,MAAM,CAAC,EAAE,GAAQA,GAAErmB,GAAE2iB,GAAEwD,EAAC,KAAf,MAA4BE,KAAT,SAAkBA,GAAEjoB,GAAEgoB,EAAC,EAAE,CAAC,EAAGkB,GAAE,UAAUD,IAAGA,GAAE,YAAYC,GAAE,QAAQ,CAAC,EAAEnB,GAAE,EAAEA,GAAEnmB,GAAE2iB,EAAC,EAAE,OAAOwD,KAAI/nB,GAAE+nB,EAAC,CAAC,EAAE,IAAIqB,GAAE,EAAEA,GAAExnB,GAAE,OAAOwnB,KAAIE,GAAEF,EAAC,CAAC,CAAC,CAAG,GAAE7E,EAAE,UAAU,UAAU,UAAU,CAAC,IAAIA,EAAE,KAAK,OAAO,IAAI,QAAS,SAASvkB,EAAE+nB,EAAE,CAAC,IAAIC,EAAEzD,EAAE,SAAS0D,EAAE,IAAI,MAAM,GAAG,CAACD,EAAE,MAAM,OAAOD,EAAE,sBAAsB,EAAY,OAAOC,EAAE,aAAa,aAAhC,WAA8CC,EAAE,YAAYD,EAAE,aAAa,aAAazD,EAAE,OAAO0D,EAAEA,EAAE,OAAO,UAAU,CAACjoB,EAAC,CAAE,EAAEioB,EAAE,IAAID,EAAE,KAAK,CAAG,GAAEzD,EAAE,UAAU,UAAU,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,MAAMwD,EAAExD,EAAE,OAAOyD,EAAEzD,EAAE,MAAM0D,EAAE1D,EAAE,QAAQ,OAAO4D,EAAE,KAAK,OAAO,OAAQ,UAAU,CAAC,IAAI5D,EAAE1nB,EAAE8E,EAAE0I,EAAEoe,EAAEte,EAAE+G,EAAErH,GAAE/G,GAAE,OAAO6lB,EAAE,KAAM,SAASD,GAAE,CAAC,OAAOA,GAAE,MAAK,CAAE,IAAK,GAAE,OAAOnE,EAAE,KAAK,SAAS1nB,EAAE,KAAK,OAAO0nB,EAAE,MAAMyD,EAAEC,GAAG,CAAC,EAAEtmB,EAAE,KAAK,OAAO4iB,EAAE,OAAOyD,EAAEC,GAAG,CAAC,EAAE5d,EAAExN,EAAE0nB,EAAE,aAAa,QAAQyD,EAAEC,EAAEjoB,GAAG,EAAEyoB,EAAE9mB,EAAE4iB,EAAE,aAAa,QAAQyD,EAAEC,EAAEF,GAAG,EAAE5d,EAAEnK,EAAE,EAAEukB,EAAE,aAAa,OAAOrT,EAAE6W,EAAE,EAAExD,EAAE,aAAa,QAAQ1a,GAAE,SAAS,gBAAgB,6BAA6B,OAAO,GAAG,aAAa,IAAI,OAAOQ,CAAC,CAAC,EAAER,GAAE,aAAa,IAAI,OAAO4e,CAAC,CAAC,EAAE5e,GAAE,aAAa,QAAQM,EAAE,IAAI,EAAEN,GAAE,aAAa,SAASqH,EAAE,IAAI,EAAE,CAAC,EAAE9B,EAAEmV,EAAE,OAAO,EAAE,CAAC,EAAE,IAAK,GAAE,OAAOzhB,GAAE4lB,GAAE,KAAM,EAAC7e,GAAE,aAAa,OAAO/G,IAAG,EAAE,EAAE,KAAK,SAAS,YAAY+G,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAG,GAAG,EAAE0a,EAAE,UAAU,aAAa,SAASA,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,QAAQwD,EAAExD,EAAE,MAAMyD,EAAEzD,EAAE,mBAAmB0D,EAAE1D,EAAE,EAAE1nB,EAAE0nB,EAAE,EAAE5iB,EAAE4iB,EAAE,OAAOla,EAAEka,EAAE,MAAMnV,EAAEmV,EAAE,KAAKkE,EAAEpe,EAAE1I,EAAE0I,EAAE1I,EAAEwI,EAAE,SAAS,gBAAgB,6BAA6B,MAAM,EAAE,GAAGA,EAAE,aAAa,IAAI,OAAO8d,CAAC,CAAC,EAAE9d,EAAE,aAAa,IAAI,OAAOtN,CAAC,CAAC,EAAEsN,EAAE,aAAa,SAAS,OAAOxI,CAAC,CAAC,EAAEwI,EAAE,aAAa,QAAQ,OAAOE,CAAC,CAAC,EAAEF,EAAE,aAAa,YAAY,mBAAmBiF,EAAE,IAAI,EAAEpP,EAAE,CAAC,IAAIkR,EAAE,GAAclR,EAAE,OAAb,UAAmBkR,EAAE,SAAS,gBAAgB,6BAA6B,gBAAgB,GAAG,aAAa,KAAK9B,CAAC,EAAE8B,EAAE,aAAa,gBAAgB,gBAAgB,EAAEA,EAAE,aAAa,KAAK,OAAO+W,EAAE5d,EAAE,CAAC,CAAC,EAAE6G,EAAE,aAAa,KAAK,OAAOrU,EAAE8E,EAAE,CAAC,CAAC,EAAEuP,EAAE,aAAa,KAAK,OAAO+W,EAAE5d,EAAE,CAAC,CAAC,EAAE6G,EAAE,aAAa,KAAK,OAAOrU,EAAE8E,EAAE,CAAC,CAAC,EAAEuP,EAAE,aAAa,IAAI,OAAOuX,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI5e,KAAI7J,EAAE,UAAU,GAAGgoB,IAAI,EAAE,KAAK,IAAIllB,IAAG+G,GAAE,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI6e,GAAET,EAAE5d,EAAE,EAAElH,GAAEtG,EAAE8E,EAAE,EAAEumB,GAAED,EAAE5d,EAAE,EAAE8d,GAAEtrB,EAAE8E,EAAE,EAAEmB,IAAG,GAAGA,IAAG,IAAI,KAAK,IAAIA,GAAE,KAAK,KAAK,IAAIA,IAAG,EAAE,KAAK,IAAI4lB,IAAGre,EAAE,EAAElH,IAAGxB,EAAE,EAAE,KAAK,IAAIkI,EAAC,EAAEqe,IAAG7d,EAAE,EAAE8d,IAAGxmB,EAAE,EAAE,KAAK,IAAIkI,EAAC,GAAG/G,GAAE,IAAI,KAAK,IAAIA,IAAG,IAAI,KAAK,IAAIK,IAAGxB,EAAE,EAAE+mB,IAAGre,EAAE,EAAE,KAAK,IAAIR,EAAC,EAAEse,IAAGxmB,EAAE,EAAEumB,IAAG7d,EAAE,EAAE,KAAK,IAAIR,EAAC,GAAG/G,GAAE,IAAI,KAAK,IAAIA,IAAG,KAAK,KAAK,IAAI4lB,IAAGre,EAAE,EAAElH,IAAGxB,EAAE,EAAE,KAAK,IAAIkI,EAAC,EAAEqe,IAAG7d,EAAE,EAAE8d,IAAGxmB,EAAE,EAAE,KAAK,IAAIkI,EAAC,GAAG/G,GAAE,KAAK,KAAK,IAAIA,IAAG,KAAK,KAAK,KAAKK,IAAGxB,EAAE,EAAE+mB,IAAGre,EAAE,EAAE,KAAK,IAAIR,EAAC,EAAEse,IAAGxmB,EAAE,EAAEumB,IAAG7d,EAAE,EAAE,KAAK,IAAIR,EAAC,IAAIqH,EAAE,SAAS,gBAAgB,6BAA6B,gBAAgB,GAAG,aAAa,KAAK9B,CAAC,EAAE8B,EAAE,aAAa,gBAAgB,gBAAgB,EAAEA,EAAE,aAAa,KAAK,OAAO,KAAK,MAAMwX,EAAC,CAAC,CAAC,EAAExX,EAAE,aAAa,KAAK,OAAO,KAAK,MAAM/N,EAAC,CAAC,CAAC,EAAE+N,EAAE,aAAa,KAAK,OAAO,KAAK,MAAMgX,EAAC,CAAC,CAAC,EAAEhX,EAAE,aAAa,KAAK,OAAO,KAAK,MAAMiX,EAAC,CAAC,CAAC,CAAC,CAACnoB,EAAE,WAAW,QAAS,SAASukB,GAAE,CAAC,IAAIvkB,GAAEukB,GAAE,OAAOwD,GAAExD,GAAE,MAAMyD,GAAE,SAAS,gBAAgB,6BAA6B,MAAM,EAAEA,GAAE,aAAa,SAAS,IAAIhoB,GAAE,GAAG,EAAEgoB,GAAE,aAAa,aAAaD,EAAC,EAAE7W,EAAE,YAAY8W,EAAC,CAAC,CAAG,EAAC7d,EAAE,aAAa,OAAO,SAASiF,EAAE,IAAI,EAAE,KAAK,MAAM,YAAY8B,CAAC,CAAC,MAAM6W,GAAG5d,EAAE,aAAa,OAAO4d,CAAC,EAAE,KAAK,SAAS,YAAY5d,CAAC,CAAC,EAAEoa,CAAC,EAAG,EAAC6D,GAAE,SAAS,QAAQE,GAAE,CAAE,EAACD,EAAE,EAAEA,GAAG,GAAGA,IAAIC,GAAED,CAAC,EAAEA,EAAE,MAAMG,EAAE,CAAC,KAAKJ,GAAE,MAAM,SAAS,MAAM,IAAI,OAAO,IAAI,KAAK,GAAG,OAAO,EAAE,UAAU,CAAC,WAAWE,GAAE,CAAC,EAAE,KAAK,OAAO,qBAAqB,GAAG,EAAE,aAAa,CAAC,mBAAmB,GAAG,UAAU,GAAG,YAAY,OAAO,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,EAAE,IAAIC,EAAE,UAAU,CAAC,OAAOA,EAAE,OAAO,QAAQ,SAAShE,EAAE,CAAC,QAAQvkB,EAAE+nB,EAAE,EAAEC,EAAE,UAAU,OAAOD,EAAEC,EAAED,IAAI,QAAQE,KAAKjoB,EAAE,UAAU+nB,CAAC,EAAE,OAAO,UAAU,eAAe,KAAK/nB,EAAEioB,CAAC,IAAI1D,EAAE0D,CAAC,EAAEjoB,EAAEioB,CAAC,GAAG,OAAO1D,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,SAASqE,EAAErE,EAAE,CAAC,IAAIvkB,EAAEuoB,EAAE,GAAGhE,CAAC,EAAE,GAAG,CAACvkB,EAAE,YAAY,CAACA,EAAE,WAAW,OAAO,KAAK,6CAA6C,OAAOA,EAAE,SAASA,EAAE,SAAS,OAAOA,EAAE,QAAQ,EAAEA,EAAE,SAAS,EAAEA,EAAE,WAAWA,EAAE,WAAW,IAAK,SAASukB,EAAE,CAAC,OAAOgE,EAAEA,EAAE,GAAGhE,CAAC,EAAE,CAAC,OAAO,OAAOA,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAGvkB,CAAC,CAAC,SAAS8oB,EAAEvE,EAAE,CAAC,IAAIvkB,EAAEuoB,EAAE,GAAGhE,CAAC,EAAE,OAAOvkB,EAAE,MAAM,OAAOA,EAAE,KAAK,EAAEA,EAAE,OAAO,OAAOA,EAAE,MAAM,EAAEA,EAAE,OAAO,OAAOA,EAAE,MAAM,EAAEA,EAAE,aAAauoB,EAAEA,EAAE,CAAE,EAACvoB,EAAE,YAAY,EAAE,CAAC,mBAAmB,EAAQA,EAAE,aAAa,mBAAoB,UAAU,OAAOA,EAAE,aAAa,SAAS,EAAE,OAAO,OAAOA,EAAE,aAAa,MAAM,CAAC,CAAC,EAAEA,EAAE,OAAO,KAAK,IAAIA,EAAE,MAAMA,EAAE,MAAM,IAAIA,EAAE,OAAO,KAAK,IAAIA,EAAE,MAAMA,EAAE,MAAM,GAAGA,EAAE,YAAYuoB,EAAE,GAAGvoB,EAAE,WAAW,EAAEA,EAAE,YAAY,WAAWA,EAAE,YAAY,SAAS4oB,EAAE5oB,EAAE,YAAY,QAAQ,GAAGA,EAAE,uBAAuBA,EAAE,qBAAqBuoB,EAAE,GAAGvoB,EAAE,oBAAoB,EAAEA,EAAE,qBAAqB,WAAWA,EAAE,qBAAqB,SAAS4oB,EAAE5oB,EAAE,qBAAqB,QAAQ,IAAIA,EAAE,oBAAoBA,EAAE,kBAAkBuoB,EAAE,GAAGvoB,EAAE,iBAAiB,EAAEA,EAAE,kBAAkB,WAAWA,EAAE,kBAAkB,SAAS4oB,EAAE5oB,EAAE,kBAAkB,QAAQ,IAAIA,EAAE,oBAAoBA,EAAE,kBAAkBuoB,EAAE,CAAE,EAACvoB,EAAE,iBAAiB,EAAEA,EAAE,kBAAkB,WAAWA,EAAE,kBAAkB,SAAS4oB,EAAE5oB,EAAE,kBAAkB,QAAQ,IAAIA,CAAC,CAAC,IAAI+oB,GAAEhB,EAAE,GAAG,EAAEvP,GAAEuP,EAAE,EAAEgB,EAAC,EAAEC,GAAE,SAASzE,EAAEvkB,EAAE+nB,EAAEC,EAAE,CAAC,OAAO,IAAID,IAAIA,EAAE,UAAW,SAASE,EAAEprB,EAAE,CAAC,SAAS8E,EAAE4iB,EAAE,CAAC,GAAG,CAACnV,EAAE4Y,EAAE,KAAKzD,CAAC,CAAC,CAAC,OAAOA,EAAE,CAAC1nB,EAAE0nB,CAAC,CAAC,CAAC,CAAC,SAASla,EAAEka,EAAE,CAAC,GAAG,CAACnV,EAAE4Y,EAAE,MAAMzD,CAAC,CAAC,CAAC,OAAOA,EAAE,CAAC1nB,EAAE0nB,CAAC,CAAC,CAAC,CAAC,SAASnV,EAAEmV,EAAE,CAAC,IAAIvkB,EAAEukB,EAAE,KAAK0D,EAAE1D,EAAE,KAAK,GAAGvkB,EAAEukB,EAAE,MAAMvkB,aAAa+nB,EAAE/nB,EAAE,IAAI+nB,EAAG,SAASxD,EAAE,CAACA,EAAEvkB,CAAC,CAAC,CAAC,GAAI,KAAK2B,EAAE0I,CAAC,CAAC,CAAC+E,GAAG4Y,EAAEA,EAAE,MAAMzD,EAAEvkB,GAAG,EAAE,GAAG,KAAM,EAAC,CAAG,GAAEipB,GAAE,SAAS1E,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAEC,EAAEC,EAAEprB,EAAE8E,EAAE,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,GAAG,EAAEsmB,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAE,GAAE,OAAOprB,EAAE,CAAC,KAAKwN,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAc,OAAO,QAAnB,aAA4BxN,EAAE,OAAO,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,GAAGA,EAAE,SAASwN,EAAExN,EAAE,CAAC,OAAO,SAASwN,EAAE,CAAC,OAAO,SAASxN,EAAE,CAAC,GAAGkrB,EAAE,MAAM,IAAI,UAAU,iCAAiC,EAAE,KAAKpmB,GAAG,GAAG,CAAC,GAAGomB,EAAE,EAAEC,IAAIC,EAAE,EAAEprB,EAAE,CAAC,EAAEmrB,EAAE,OAAOnrB,EAAE,CAAC,EAAEmrB,EAAE,SAASC,EAAED,EAAE,SAASC,EAAE,KAAKD,CAAC,EAAE,GAAGA,EAAE,OAAO,EAAEC,EAAEA,EAAE,KAAKD,EAAEnrB,EAAE,CAAC,CAAC,GAAG,KAAK,OAAOorB,EAAE,OAAOD,EAAE,EAAEC,IAAIprB,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEorB,EAAE,KAAK,GAAGprB,EAAE,CAAC,EAAC,CAAE,IAAK,GAAE,IAAK,GAAEorB,EAAEprB,EAAE,MAAM,IAAK,GAAE,OAAO8E,EAAE,QAAQ,CAAC,MAAM9E,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAK,GAAE8E,EAAE,QAAQqmB,EAAEnrB,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,SAAS,IAAK,GAAEA,EAAE8E,EAAE,IAAI,IAAK,EAACA,EAAE,KAAK,MAAM,SAAS,QAAQ,GAAG,GAAGsmB,GAAGA,EAAEtmB,EAAE,MAAM,OAAO,GAAGsmB,EAAEA,EAAE,OAAO,CAAC,IAAQprB,EAAE,CAAC,IAAP,GAAcA,EAAE,CAAC,IAAP,GAAU,CAAC8E,EAAE,EAAE,QAAQ,CAAC,GAAO9E,EAAE,CAAC,IAAP,IAAW,CAACorB,GAAGprB,EAAE,CAAC,EAAEorB,EAAE,CAAC,GAAGprB,EAAE,CAAC,EAAEorB,EAAE,CAAC,GAAG,CAACtmB,EAAE,MAAM9E,EAAE,CAAC,EAAE,KAAK,CAAC,GAAOA,EAAE,CAAC,IAAP,GAAU8E,EAAE,MAAMsmB,EAAE,CAAC,EAAE,CAACtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAEA,EAAEprB,EAAE,KAAK,CAAC,GAAGorB,GAAGtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAE,CAACtmB,EAAE,MAAMsmB,EAAE,CAAC,EAAEtmB,EAAE,IAAI,KAAK9E,CAAC,EAAE,KAAK,CAACorB,EAAE,CAAC,GAAGtmB,EAAE,IAAI,IAAK,EAACA,EAAE,KAAK,IAAG,EAAG,QAAQ,CAAC9E,EAAEmD,EAAE,KAAKukB,EAAE5iB,CAAC,CAAC,OAAO4iB,EAAE,CAAC1nB,EAAE,CAAC,EAAE0nB,CAAC,EAAEyD,EAAE,CAAC,QAAC,CAAQD,EAAEE,EAAE,CAAC,CAAC,GAAG,EAAEprB,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,MAAM,CAAC,MAAMA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,CAACA,EAAEwN,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAMwe,GAAE,UAAU,CAAC,SAAStE,EAAEA,EAAE,CAAC,KAAK,SAASA,EAAEuE,EAAEnnB,EAAE6mB,EAAEjE,CAAC,CAAC,EAAEiE,EAAE,KAAK,OAAM,CAAE,CAAC,OAAOjE,EAAE,gBAAgB,SAASA,EAAE,CAACA,IAAIA,EAAE,UAAU,GAAG,EAAEA,EAAE,UAAU,UAAU,UAAU,CAAC,IAAIA,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,IAAIvkB,EAAE,IAAIqR,GAAE,KAAK,QAAQ,EAAE,KAAK,KAAKrR,EAAE,aAAa,KAAK,mBAAmBA,EAAE,OAAO,KAAK,GAAG,EAAE,KAAM,UAAU,CAAC,IAAI+nB,EAAExD,EAAE,QAAewD,EAAExD,EAAE,cAAZ,MAAkCwD,IAAT,QAAYA,EAAE,KAAKxD,EAAEvkB,EAAE,aAAaukB,EAAE,QAAQ,EAAE,CAAC,CAAE,CAAC,EAAEA,EAAE,UAAU,aAAa,UAAU,CAAC,IAAIA,EAAEvkB,EAAE,KAAK,KAAK,MAAM,KAAK,QAAQ,SAAS,cAAc,QAAQ,EAAE,KAAK,QAAQ,MAAM,KAAK,SAAS,MAAM,KAAK,QAAQ,OAAO,KAAK,SAAS,OAAO,KAAK,YAAY,KAAK,uBAA8BukB,EAAE,KAAK,sBAAf,MAA6CA,IAAT,OAAW,OAAOA,EAAE,KAAM,UAAU,CAAC,GAAGvkB,EAAE,KAAK,CAAC,IAAIukB,EAAEvkB,EAAE,KAAK+nB,EAAG,IAAI,gBAAe,kBAAkBxD,CAAC,EAAEyD,EAAE,6BAA6B,KAAKD,CAAC,EAAEE,EAAE,IAAI,MAAM,OAAO,IAAI,QAAS,SAAS1D,EAAE,CAAC0D,EAAE,OAAO,UAAU,CAAC,IAAIF,EAAEC,GAAUA,GAAUD,EAAE/nB,EAAE,WAAZ,MAA+B+nB,IAAT,OAAW,OAAOA,EAAE,WAAW,IAAI,KAAnE,MAAgFC,IAAT,QAAYA,EAAE,UAAUC,EAAE,EAAE,CAAC,EAAE1D,EAAG,GAAE0D,EAAE,IAAID,CAAC,CAAG,EAAC,CAAG,EAAC,EAAEzD,EAAE,UAAU,YAAY,SAASA,EAAE,CAAC,OAAgBA,IAAT,SAAaA,EAAE,OAAOyE,GAAE,KAAK,OAAO,OAAQ,UAAU,CAAC,OAAOC,GAAE,KAAM,SAASjpB,EAAE,CAAC,OAAOA,EAAE,OAAO,IAAK,GAAE,GAAG,CAAC,KAAK,IAAI,KAAK,mBAAmB,OAAcukB,EAAE,gBAAV,MAAwB,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,KAAK,oBAAoB,KAAK,UAAW,EAAC,CAAC,EAAE,KAAK,kBAAkB,GAAG,IAAK,GAAE,OAAOvkB,EAAE,KAAM,EAAC,CAAC,EAAE,KAAK,IAAI,EAAE,IAAK,GAAE,OAAO,KAAK,SAAS,KAAK,uBAAuB,KAAK,aAAY,EAAG,CAAC,EAAE,KAAK,qBAAqB,EAAE,IAAK,GAAE,OAAOA,EAAE,KAAM,EAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAE,CAAG,GAAEukB,EAAE,UAAU,OAAO,SAASvkB,EAAE,CAACukB,EAAE,gBAAgB,KAAK,UAAU,EAAE,KAAK,SAASvkB,EAAE8oB,EAAEnnB,EAAE,KAAK,SAAS3B,CAAC,CAAC,EAAE,KAAK,SAAS,KAAK,SAAS,OAAO,KAAK,IAAIwY,GAAG,EAAC,KAAK,SAAS,UAAU,WAAW,KAAK,SAAS,UAAU,oBAAoB,EAAE,KAAK,IAAI,QAAQ,KAAK,SAAS,KAAK,KAAK,SAAS,UAAU,MAAM,SAAS+L,EAAE,CAAC,OAAO,GAAI,KAAI,WAAW,KAAKA,CAAC,EAAE,MAAM,UAAU,IAAI,wBAAwB,KAAKA,CAAC,EAAE,MAAM,eAAe,QAAQ,MAAM,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,KAAK,IAAI,KAAM,EAAC,KAAK,SAAS,OAAO6D,GAAE,KAAK,aAAY,EAAG,KAAK,UAAW,EAAC,KAAK,OAAO,KAAK,UAAU,EAAE,EAAE7D,EAAE,UAAU,OAAO,SAASA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAe,OAAOA,EAAE,aAArB,WAAiC,KAAK,wCAAwC,KAAK,SAAS,OAAO6D,GAAE,KAAK,SAAS7D,EAAE,YAAY,KAAK,OAAO,EAAE,KAAK,MAAMA,EAAE,YAAY,KAAK,IAAI,EAAE,KAAK,WAAWA,CAAC,CAAC,EAAEA,EAAE,UAAU,eAAe,SAASA,EAAE,CAAC,GAAG,CAACA,EAAE,KAAK,wCAAwC,KAAK,WAAWA,EAAE,KAAK,OAAQ,GAAEA,EAAE,UAAU,gBAAgB,UAAU,CAAC,KAAK,WAAW,OAAO,KAAK,QAAQ,EAAEA,EAAE,UAAU,WAAW,SAASA,EAAE,CAAC,OAAgBA,IAAT,SAAaA,EAAE,OAAOyE,GAAE,KAAK,OAAO,OAAQ,UAAU,CAAC,IAAIhpB,EAAE+nB,EAAEC,EAAE,OAAOiB,GAAE,KAAM,SAAShB,EAAE,CAAC,OAAOA,EAAE,MAAK,CAAE,IAAK,GAAE,GAAG,CAAC,KAAK,IAAI,KAAK,mBAAmB,MAAM,CAAC,EAAE,KAAK,YAAY1D,CAAC,CAAC,EAAE,IAAK,GAAE,OAAOvkB,EAAEioB,EAAE,KAAM,GAAU1D,EAAE,YAAa,IAAvB,OAAyBwD,EAAE,IAAI,cAAcC,EAAED,EAAE,kBAAkB/nB,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC;AAAA,EAA4CgoB,CAAC,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,QAAS,SAASD,EAAE,CAAC,OAAO/nB,EAAE,OAAO+nB,EAAE,SAASxD,EAAE,CAAC,CAAC,CAAG,GAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAE,CAAG,GAAEA,EAAE,UAAU,SAAS,SAASA,EAAE,CAAC,OAAOyE,GAAE,KAAK,OAAO,OAAQ,UAAU,CAAC,IAAIhpB,EAAE+nB,EAAEC,EAAEC,EAAEprB,EAAE,OAAOosB,GAAE,KAAM,SAAStnB,EAAE,CAAC,OAAOA,EAAE,MAAK,CAAE,IAAK,GAAE,GAAG,CAAC,KAAK,IAAI,KAAK,mBAAmB,OAAO3B,EAAE,MAAM+nB,EAAE,KAAe,OAAOxD,GAAjB,UAAoBvkB,EAAEukB,EAAE,QAAQ,KAAK,6HAA6H,GAAa,OAAOA,GAAjB,UAA2BA,IAAP,OAAWA,EAAE,OAAOwD,EAAExD,EAAE,MAAMA,EAAE,YAAYvkB,EAAEukB,EAAE,YAAY,CAAC,EAAE,KAAK,YAAYvkB,CAAC,CAAC,EAAE,IAAK,GAAE,OAAOgoB,EAAErmB,EAAE,KAAI,IAAa3B,EAAE,gBAAV,OAAyBioB,EAAE,IAAI,cAAcprB,EAAE;AAAA,GAA6CA,EAAEorB,EAAE,kBAAkBD,CAAC,GAAG3d,EAAE,oCAAoC,mBAAmBxN,CAAC,EAAEkrB,EAAE,MAAM,GAAG1d,EAAE2d,EAAE,UAAU,SAAShoB,CAAC,EAAE+nB,EAAE,IAAI/nB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAG,GAAEukB,CAAC,EAAC,CAAE,CAAC,EAAEvkB,EAAE,GAAG,SAAS+nB,EAAE,EAAE,CAAC,GAAG/nB,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,EAAE,QAAQ,IAAIioB,EAAEjoB,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAOukB,EAAE,CAAC,EAAE0D,EAAEA,EAAE,QAAQF,CAAC,EAAEE,EAAE,OAAO,CAAC,OAAOF,EAAE,EAAExD,GAAG,CAAC,IAAIvkB,EAAEukB,GAAGA,EAAE,WAAW,IAAIA,EAAE,QAAQ,IAAIA,EAAE,OAAOwD,EAAE,EAAE/nB,EAAE,CAACA,CAAG,CAAC,EAAEA,CAAC,EAAE+nB,EAAE,EAAE,CAACxD,EAAEvkB,IAAI,CAAC,QAAQgoB,KAAKhoB,EAAE+nB,EAAE,EAAE/nB,EAAEgoB,CAAC,GAAG,CAACD,EAAE,EAAExD,EAAEyD,CAAC,GAAG,OAAO,eAAezD,EAAEyD,EAAE,CAAC,WAAW,GAAG,IAAIhoB,EAAEgoB,CAAC,CAAC,CAAC,CAAC,EAAED,EAAE,EAAE,CAACxD,EAAEvkB,IAAI,OAAO,UAAU,eAAe,KAAKukB,EAAEvkB,CAAC,EAAE+nB,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,0CCM96lDwB,GAAmB,qHAIzB,MAAMC,WAAejvB,EAAM,aAAc,CACvC,YAAYD,EAAO,CACjB,MAAMA,CAAK,EAEL,MAAE,MAAAyE,EAAO,OAAAR,CAAW,EAAAjE,EACrB,eAAYC,EAAM,YACvB,KAAK,OAAS,IAAIkvB,GAChBhC,GAAqBntB,EAAM,IAAK,OAAO,KAAK,KAAM,CAAE,MAAAyE,EAAO,OAAAR,EAAQ,EAEvE,CAEA,mBAAoB,CACZ,MAAAmrB,EAAa,IAAI,WACjBC,EAA8BC,GAAA,CAClCF,EAAW,cAAcE,CAAI,GAEzBC,EAAqB,IAAM,CAC3B,KAAK,UAAU,UACZ,eAAU,QAAQ,IAAMH,EAAW,OAC1C,EAEII,EAAuBpK,GAAA,CAC3B,KAAM,0BAA0BA,CAAM,IAGxCgK,EAAW,OAASG,EACpB,KAAK,OAAO,WAAW,KAAK,EAAE,KAAKF,EAAqBG,CAAU,EAClE,KAAK,OAAO,OAAO,KAAK,UAAU,OAAO,CAC3C,CAEA,QAAS,CACP,KAAM,CAAE,IAAA9vB,EAAK,MAAA+E,EAAO,OAAAR,CAAA,EAAW,KAAK,MAGlC,OAAAhE,EAAA,cAAC,OACC,UAAU,6BACV,IAAK,KAAK,UACV,IAAI,wDACJ,eAAa,wBACb,IAAKgvB,GACL,MAAAxqB,EACA,OAAAR,EACA,WAAUvE,CAAA,EAGhB,CACF,CAEAwvB,GAAO,UAAY,CACjB,IAAK5uB,GAAU,OAAO,WACtB,MAAOA,GAAU,OACjB,OAAQA,GAAU,MACpB,EAEA4uB,GAAO,aAAe,CACpB,MAAO,IACP,OAAQ,GACV,ECjEA,SAAwBxtB,IAAU,CAE9B,OAAAzB,EAAA,cAAC,OACC,eAAa,gCACb,UAAU,+CACV,KAAK,UAEX,CCNA,SAAwBwvB,GAAgB,CACtC,UAAAC,EACA,4BAAAC,CACF,EAAG,CAEC,OAAA1vB,EAAA,cAAAA,EAAA,8BACG,KAAG,WAAU,6CACXyvB,EAAU,4CACb,EACAzvB,EAAA,cAAC,QAAM,WAAU,8CAA6C,oDAE9D,EACCA,EAAA,uBAAM,UAAU,8CAA6C,kEAE9D,EACAA,EAAA,cAAC,QAAM,WAAU,iDACf,EAAAA,EAAA,cAAC,UACC,UAAU,sBACV,aAAW,kBACX,KAAK,SACL,QAAS0vB,CAAA,EAA6B,iBAG1C,GACC1vB,EAAA,cAAAyB,GAAA,IAAQ,CACX,CAEJ,CC3BwB,SAAAkuB,GAAqB,CAAE,kBAAAC,GAAqB,CAEhE,OAAA5vB,EAAA,cAAC,OACC,eAAa,yBACb,UAAU,2CACV,KAAK,SACLA,EAAA,cAAC,IAAE,WAAU,kDAAmD,GAC/D4vB,EAAkB,IAAEC,GAAU,QAASD,CAAiB,EAAE,oBAIjE,CCXA,SAASE,IAAuB,CAC9B,KAAM,CAAE,uBAAAC,CAAwB,EAAG,OAC7BC,EAAYC,GAAkB,SAAQ,EAAG,UAEzCC,GACJH,GAAA,YAAAA,EAAwB,4BAA6B,GAEvD,OAAIC,EACK,GAAGE,CAAkB,aAAaF,EAAU,EAAE,QAAQA,EAAU,GAAG,GAGrEE,CACT,CAEO,eAAeC,IAA6B,CACjD,GAAI,CACF,MAAMxwB,EAAW,MAAM,MAAMmwB,GAAsB,GAEnD,OAAInwB,EAAS,GACJ,MAAMA,EAAS,OAGjB,CACL,MAAO,6DACb,CACG,OAAQyI,EAAO,CACd,MAAO,CACL,MAAOA,CACb,CACG,CACH,CCfA,MAAMgoB,WAAuBpwB,EAAM,SAAU,CAW3C,aAAc,CACN,QAiHRmE,GAAA,yBAA6BtC,GAAA,CAC3B,KAAM,CAAE,KAAMwuB,EAAS,IAAOxuB,EACxByuB,EAAgBD,EAAO,OAE7BnwB,GAAgB,SAAS,CACvB,KAAMsG,GAAM,aACZ,gBAAiB8pB,EACjB,MAAOtjB,GAAqB,EAC7B,EAEDqjB,EAAO,QAAiBvuB,GAAA,CACtB5B,GAAgB,SAAS,CACvB,KAAMsG,GAAM,gBACZ,KAAM1E,EACN,gBAAiBwuB,CAAA,CAClB,EACF,EAEDpwB,GAAgB,SAAS,CACvB,KAAMsG,GAAM,YACZ,iBAAkB,EAClB,gBAAiB8pB,CAAA,CAClB,IAGHnsB,GAAA,6BAAwB,CAAC,CAAE,UAAAsrB,KAAgB,CACzC,KAAK,SAAS,CACZ,eAAgB,GAChB,UAAAA,EACA,kBAAmB,EACpB,IAGHtrB,GAAA,wBAAmB,CAAC,CAAE,kBAAAyrB,KAAwB,CAC5C,KAAK,SAAS,CACZ,eAAgB,GAChB,kBAAAA,CAAA,CACD,IAGHzrB,GAAA,mCAA8B,IAAM,CAClC,KAAK,SAAS,CAAE,eAAgB,EAAO,KAzJjC,MAAE,IAAAmC,CAAQ,SAEhB,KAAK,MAAQ,CACX,SAAUA,GAAOA,EAAI,MAAM,UAAU,EACrC,0BAA2B,GAC3B,eAAgB,GAChB,QAAS,GACT,UAAW,EACX,kBAAmB,GAEhB,WAAQ,KAAK,OAAS,EAC7B,CAvBA,OAAO,UAAW,CACV,MAAE,uBAAAypB,CAA2B,SAGjC,OAAC,EAACA,GAAA,MAAAA,EAAwB,UAC1B,CAACQ,GAAe,iBAChB,CAACA,GAAe,eAEpB,CAiBA,eAAgB,CACd,MAAO,EACT,CAEA,OAAQ,CAAC,CAET,eAAgB,CAAC,CAEjB,SAAU,CAAC,CAEX,OAAQ,CAAC,CAET,4BAA6B,CACpB,QACT,CAEA,eAAgB,CAAC,CAEjB,mBAAoB,CAClB,KAAK,qBAAuBrwB,GAAgB,SAAS,MAAMqG,GAAW,CACpE,OAAQA,EAAQ,KAAM,CACpB,KAAKC,GAAM,MACH,MAAAgqB,EAAuB,MAAML,KAEnC,KAAK,SAAS,CACZ,SAAU,GACV,GAAGK,CAAA,CACJ,EACD,MAEF,KAAKhqB,GAAM,uBACLD,EAAQ,UAAY,UACtB,KAAK,sBAAsB,EAE7B,MAEF,KAAKC,GAAM,gBACT,KAAK,SAAuBiqB,IAAA,CAC1B,UAAYA,EAAU,WAAa,CACnC,IACF,MAEF,KAAKjqB,GAAM,YACT,KAAK,SAAS,CAAE,eAAgB,EAAO,GACvC,CAAC,KAAK,MAAM,mBAAqB,EAAE,eAAe,EAAE,MAAM,MAAM,EAChE,KACJ,EACD,EAEG,KAAK,MAAM,UACb,KAAK,sBAAsB,CAE/B,CAEA,sBAAuB,CACLtG,GAAA,WAAW,KAAK,oBAAoB,CACtD,CAEA,sBAAsBwwB,EAAW,CACzB,MACJ,UAAAjB,EACA,0BAAAkB,EACA,kBAAAf,CAAA,EACE,KAAK,MACT,OACEc,EAAU,YAAcjB,GACxBiB,EAAU,4BAA8BC,GACxCD,EAAU,oBAAsBd,CAEpC,CAEA,MAAM,uBAAwB,CACxB,IAAC,KAAK,MAAM,0BAA2B,CACnC,MAAAgB,EAAgB,MAAMT,KAE5B,KAAK,SAAS,CACZ,0BAA2B,GAC3B,QAAS,GACT,GAAGS,CAAA,CACJ,CACH,CACF,CAEA,cAAc/iB,EAAe,CAC3B,MAAMC,EAAaC,GAAgB,WACjC,KAAK,MAAM,IAAIxF,GAAKA,EAAE,eAAe,GAGjChC,EAAU,CACd,KAAMC,GAAM,UAAU,KACtB,cAAAqH,EACA,YAAa,gBACb,WAAAC,EACA,WAAY,GAGdE,GAAiB,qBAAqBzH,CAAO,CAC/C,CA8CA,QAAS,CACD,MACJ,0BAAAoqB,EACA,eAAAE,EACA,UAAApB,EACA,kBAAAG,EACA,kBAAAkB,EACA,OAAAvO,EACA,QAAAwO,EACA,MAAA3oB,CAAA,EACE,KAAK,MAET,OAAI2oB,kBAECC,GAAqB,IAAG,KAAK,KAC5B,EAAAhxB,EAAA,cAACyB,OAAQ,CACX,EAIA2G,kBAEC4oB,GAAqB,IAAG,KAAK,uBAC3BnF,GAAU,MAAK,SAAS,UAAU,qBAChC7rB,EAAA,mBAAE,UAAU,kDAAmD,GAC/DoI,CACH,CACF,EAKDpI,EAAA,cAAAgxB,GAAA,CAAqB,GAAG,KAAK,OAC3BL,GACC3wB,EAAA,cAAC0sB,GAAA,CACC,OAAAnK,EACA,cAAe,CACb,sBAAuB,KAAK,kBAC5B,yBAA0B,KAAK,sBAC/B,2BAA4B,KAAK,gBACnC,EACA,gBAAgB,qBACfsO,EACC7wB,EAAA,cAACwvB,GAAA,CACC,UAAAC,EACA,4BAA6B,KAAK,8CAGnC,MAAI,WAAU,uCACZzvB,EAAA,qBAAI,UAAU,oCACb,EAAAA,EAAA,cAAC,KAAE,UAAU,mCAAmC,EAC/CA,EAAA,oBAAG,UAAU,sCAAuC,0DAErD,EACAA,EAAA,cAAC,QACC,KAAAA,EAAA,cAAC,UACEA,EAAA,wBAAG,6CAA2C,EAC/CA,EAAA,cAAC,UAAG,mCAAiC,kBACpC,KAAG,yBAAkB,CACxB,CACF,CACF,EACCA,EAAA,yCACEivB,GAAO,KAAK6B,CAAmB,EAClC,CACF,EAGD,CAAC,CAAClB,GACD5vB,EAAA,cAAC2vB,IAAqB,kBAAAC,EAAsC,EAIpE,CAEJ,CACF,CAEO,MAAMoB,GAAsB,CAAC,CAClC,QAAArwB,EACA,OAAAqD,EACA,SAAAitB,EACA,SAAAnF,CACF,IAEI9rB,EAAA,cAAC,OACC,eAAc,wBAAwBW,CAAO,GAC7C,GAAI,wBAAwBA,CAAO,GACnC,MAAO,CAAE,OAAAqD,CAAe,EACxB,UAAWlD,GAAW,mCAAoCH,EAAS,CACjE,SAAU,CAACswB,CAAA,CACZ,EACD,SAAS,KACRjxB,EAAA,qBAAI,UAAU,qEACZ8rB,CACH,GAKNsE,GAAe,UAAY,CACzB,QAAS/vB,GAAU,OAAO,WAC1B,SAAUA,GAAU,KAAK,WACzB,OAAQA,GAAU,OAAO,UAC3B,EC5QS,IAAIsO,GAAsB,GAMzBA,GAAoB,EAAI,CAACE,EAASqiB,IAAe,CAChD,QAAQ5sB,KAAO4sB,EACXviB,GAAoB,EAAEuiB,EAAY5sB,CAAG,GAAK,CAACqK,GAAoB,EAAEE,EAASvK,CAAG,GAC/E,OAAO,eAAeuK,EAASvK,EAAK,CAAE,WAAY,GAAM,IAAK4sB,EAAW5sB,CAAG,CAAG,EAG3F,EAKUqK,GAAoB,EAAI,CAACwiB,EAAKC,IAAU,OAAO,UAAU,eAAe,KAAKD,EAAKC,CAAI,EAIhG,IAAI5f,GAAsB,WAAW,SAAW,GAGhD7C,GAAoB,EAAE6C,GAAqB,CACzC,eAAgB,IAAsB6f,GACtC,sBAAuB,IAAsBC,GAC7C,2BAA4B,IAAsBC,GAClD,qBAAsB,IAAsBC,GAC5C,0BAA2B,IAAsBC,GACjD,gBAAiB,IAAsBC,GACvC,eAAgB,IAAsBC,GACtC,eAAgB,IAAsBC,GACtC,YAAa,IAAsBC,GACnC,cAAe,IAAsBC,GACrC,UAAW,IAAsBC,GACjC,YAAa,IAAsBC,GACnC,oBAAqB,IAAsBC,GAC3C,UAAW,IAAsBC,GACjC,oBAAqB,IAAsBC,GAC3C,UAAW,IAAsBC,GACjC,IAAK,IAAsBC,GAC3B,YAAa,IAAsBC,GACnC,sBAAuB,IAAsBC,GAC7C,cAAe,IAAsBC,GACrC,UAAW,IAAsBC,GACjC,kBAAmB,IAAsBC,GACzC,eAAgB,IAAsBC,GACtC,cAAe,IAAsBC,GACrC,4BAA6B,IAAsBC,GACnD,kBAAmB,IAAsBC,GACzC,mBAAoB,IAAsBC,GAC1C,wBAAyB,IAAsBC,GAC/C,UAAW,IAAsBC,GACjC,aAAc,IAAsBC,GACpC,KAAM,IAAsBtd,GAC5B,eAAgB,IAAsBud,GACtC,SAAU,IAAsBC,GAChC,MAAO,IAAsBC,GAC7B,uBAAwB,IAAsBC,GAC9C,UAAW,IAAsBC,GACjC,YAAa,IAAsBC,GACnC,mBAAoB,IAAsBC,GAC1C,sBAAuB,IAAsBC,GAC7C,QAAS,IAAsBC,GAC/B,mBAAoB,IAAsBC,GAC1C,aAAc,IAAsBC,GACpC,UAAW,IAAsBC,GACjC,oBAAqB,IAAsBC,GAC3C,cAAe,IAAsBC,GACrC,iBAAkB,IAAsBC,GACxC,mBAAoB,IAAsBC,GAC1C,OAAQ,IAAsBC,GAC9B,UAAW,IAAsBC,GACjC,QAAS,IAAsBC,EACjC,CAAC,EAGD,MAAMC,GAAW,OAAO,SAAY,UAAY,QAAU,IAAO,oBAAsB,CAAC,QAAQ,SAAS,IAAM,EAAE,QAAQ,SAAS,UAAY,QAAQ,MAAQ,QAAQ,OAAS,WACzKC,GAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACnCC,GAAuB,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,CAAC,EAChDC,GAAc,KAGdC,GAAsB,CAC1B,IAAK,EACL,QAAS,EACT,MAAO,EACP,KAAM,EACN,kBAAmB,GACnB,oBAAqB,GACrB,oBAAqB,GACrB,WAAY,IACZ,OAAQ,GACV,EACM/C,GAAiB,CACrB,QAAS,EACT,OAAQ,EACR,aAAc,EACd,eAAgB,CAClB,EACMgD,GAAyB,yBACzBnD,GAAuB,CAC3B,QAAS,GACT,KAAM,EACN,SAAU,EACV,UAAW,EACX,MAAO,GACP,IAAK,GACL,UAAW,GACb,EACMD,GAA6B,CACjC,OAAQ,EACR,OAAQ,EACR,cAAe,GACf,eAAgB,GAChB,iBAAkB,GAClB,UAAW,GACX,cAAe,GACf,YAAa,GACb,gBAAiB,GACjB,wBAAyB,GACzB,oBAAqB,GACrB,eAAgB,GAChB,mBAAoB,GACpB,UAAW,EACb,EACMoB,GAAiB,CACrB,MAAO,EACP,gBAAiB,EACjB,KAAM,GACN,mBAAoB,GACpB,uBAAwB,IACxB,uBAAwB,IACxB,SAAU,KACV,mBAAoB,IACtB,EACMiC,GAAoB,CACxB,KAAM,EACN,OAAQ,EACR,YAAa,EACb,UAAW,EACX,iBAAkB,EAClB,mBAAoB,EACpB,wBAAyB,EACzB,YAAa,EACb,iBAAkB,EAClB,iBAAkB,CACpB,EACM1C,GAAiB,CACrB,eAAgB,EAChB,UAAW,EACX,WAAY,CACd,EACMN,GAAiB,CACrB,KAAM,EACN,KAAM,EACN,SAAU,EACV,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,QAAS,EACT,SAAU,EACV,UAAW,EACX,UAAW,GACX,SAAU,GACV,UAAW,GACX,MAAO,GACP,MAAO,GACP,IAAK,GACL,MAAO,GACP,eAAgB,GAChB,MAAO,GACP,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,YAAa,GACb,QAAS,GACT,UAAW,GACX,OAAQ,GACR,OAAQ,EACV,EAsCMiD,GAA4B,CAChC,MAAO,EACP,OAAQ,EACR,QAAS,EACT,MAAO,EACP,UAAW,CACb,EA4BM1B,GAAiB,CACrB,OAAQ,EACR,SAAU,EACV,MAAO,CACT,EACMd,GAAM,CACV,WAAY,EACZ,aAAc,EACd,WAAY,EACZ,YAAa,EACb,cAAe,EACf,QAAS,EACT,mBAAoB,EACpB,YAAa,EACb,UAAW,EACX,KAAM,GACN,QAAS,GACT,UAAW,GACX,OAAQ,GACR,OAAQ,GACR,QAAS,GACT,SAAU,GACV,SAAU,GACV,UAAW,GACX,UAAW,GACX,OAAQ,GACR,YAAa,GACb,KAAM,GACN,OAAQ,GACR,WAAY,GACZ,aAAc,GACd,gBAAiB,GACjB,kBAAmB,GACnB,QAAS,GACT,KAAM,GACN,OAAQ,GACR,UAAW,GACX,QAAS,GACT,eAAgB,GAChB,eAAgB,GAChB,UAAW,GACX,WAAY,GACZ,QAAS,GACT,qBAAsB,GACtB,YAAa,GACb,SAAU,GACV,mBAAoB,GACpB,cAAe,GACf,SAAU,GACV,SAAU,GACV,eAAgB,GAChB,iBAAkB,GAClB,2BAA4B,GAC5B,aAAc,GACd,sBAAuB,GACvB,oBAAqB,GACrB,kBAAmB,GACnB,eAAgB,GAChB,gBAAiB,GACjB,aAAc,GACd,cAAe,GACf,cAAe,GACf,YAAa,GACb,kBAAmB,GACnB,gBAAiB,GACjB,mBAAoB,GACpB,iBAAkB,GAClB,YAAa,GACb,iBAAkB,GAClB,eAAgB,GAChB,eAAgB,GAChB,aAAc,GACd,UAAW,GACX,eAAgB,GAChB,mBAAoB,GACpB,wBAAyB,GACzB,iBAAkB,GAClB,YAAa,GACb,UAAW,GACX,sBAAuB,GACvB,oBAAqB,GACrB,WAAY,GACZ,SAAU,GACV,gBAAiB,GACjB,cAAe,GACf,sBAAuB,GACvB,2BAA4B,GAC5B,kBAAmB,GACnB,wBAAyB,GACzB,6BAA8B,GAC9B,wBAAyB,GACzB,4BAA6B,GAC7B,yBAA0B,GAC1B,cAAe,GACf,qBAAsB,GACtB,mBAAoB,EACtB,EACMK,GAAoB,CACxB,cAAe,EACf,mBAAoB,CACtB,EACA,IAAIoC,GAAY3B,GAAe,SAC/B,SAAS4B,GAAkB/N,EAAO,CAC5B,OAAO,UAAUA,CAAK,IACxB8N,GAAY9N,EAEhB,CACA,SAASgO,IAAoB,CAC3B,OAAOF,EACT,CACA,SAAS1T,GAAKhO,EAAK,CACb0hB,IAAa3B,GAAe,OAC9B,QAAQ,IAAI,SAAS/f,CAAG,EAAE,CAE9B,CACA,SAAS6hB,GAAK7hB,EAAK,CACb0hB,IAAa3B,GAAe,UAC9B,QAAQ,IAAI,YAAY/f,CAAG,EAAE,CAEjC,CACA,SAAS8hB,GAAY9hB,EAAK,CACxB,MAAM,IAAI,MAAMA,CAAG,CACrB,CACA,SAAS+hB,GAAOC,EAAMhiB,EAAK,CACpBgiB,GACHF,GAAY9hB,CAAG,CAEnB,CACA,SAASiiB,GAAiB51B,EAAK,CAC7B,OAAQA,GAAA,YAAAA,EAAK,SAAQ,CACnB,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,OACH,MAAO,GACT,QACE,MAAO,EACV,CACH,CACA,SAAS6zB,GAAuB7zB,EAAK61B,EAAU,KAAMnjB,EAAU,KAAM,CACnE,GAAI,CAAC1S,EACH,OAAO,KAET,GAAI0S,GAAW,OAAO1S,GAAQ,SAAU,CACtC,GAAI0S,EAAQ,oBAAsB1S,EAAI,WAAW,MAAM,EAAG,CACxD,MAAM81B,EAAO91B,EAAI,MAAM,KAAK,GACxB81B,GAAA,YAAAA,EAAM,SAAU,IAClB91B,EAAM,UAAUA,CAAG,GAEtB,CACD,GAAI0S,EAAQ,mBACV,GAAI,CACF1S,EAAM+1B,GAAmB/1B,CAAG,CAC7B,MAAO,CAAE,CAEb,CACD,MAAMg2B,EAAcH,EAAU,IAAI,MAAM71B,EAAK61B,CAAO,EAAI,IAAI,MAAM71B,CAAG,EACrE,OAAO41B,GAAiBI,CAAW,EAAIA,EAAc,IACvD,CACA,SAAStB,GAAOhD,EAAKC,EAAMrmB,EAAO2qB,EAAkB,GAAO,CACzD,cAAO,eAAevE,EAAKC,EAAM,CAC/B,MAAArmB,EACA,WAAY,CAAC2qB,EACb,aAAc,GACd,SAAU,EACd,CAAG,EACM3qB,CACT,CACA,MAAM4qB,GAAgB,UAAgC,CACpD,SAASA,EAActwB,EAASyJ,EAAM,CACpC,KAAK,QAAUzJ,EACf,KAAK,KAAOyJ,CACb,CACD,OAAA6mB,EAAc,UAAY,IAAI,MAC9BA,EAAc,YAAcA,EACrBA,CACT,IACA,MAAMC,WAA0BD,EAAc,CAC5C,YAAYviB,EAAK8R,EAAM,CACrB,MAAM9R,EAAK,mBAAmB,EAC9B,KAAK,KAAO8R,CACb,CACH,CACA,MAAM2Q,WAA8BF,EAAc,CAChD,YAAYviB,EAAK0iB,EAAS,CACxB,MAAM1iB,EAAK,uBAAuB,EAClC,KAAK,QAAU0iB,CAChB,CACH,CACA,MAAM3D,WAA4BwD,EAAc,CAC9C,YAAYviB,EAAK,CACf,MAAMA,EAAK,qBAAqB,CACjC,CACH,CACA,MAAM0f,WAA0B6C,EAAc,CAC5C,YAAYviB,EAAKS,EAAQkiB,EAAS,CAChC,MAAM3iB,EAAK,mBAAmB,EAC9B,KAAK,OAASS,EACd,KAAK,QAAUkiB,CAChB,CACH,CACA,MAAMC,WAAoBL,EAAc,CACtC,YAAYviB,EAAK,CACf,MAAMA,EAAK,aAAa,CACzB,CACH,CACA,MAAMie,WAAuBsE,EAAc,CACzC,YAAYviB,EAAK,CACf,MAAMA,EAAK,gBAAgB,CAC5B,CACH,CACA,SAAS6iB,GAAc5zB,EAAO,EACxB,OAAOA,GAAU,WAAYA,GAAA,YAAAA,EAAO,UAAW,SACjD6yB,GAAY,oCAAoC,EAElD,MAAM9yB,EAASC,EAAM,OACf6zB,EAAqB,KAC3B,GAAI9zB,EAAS8zB,EACX,OAAO,OAAO,aAAa,MAAM,KAAM7zB,CAAK,EAE9C,MAAM8zB,EAAS,GACf,QAAS7zB,EAAI,EAAGA,EAAIF,EAAQE,GAAK4zB,EAAoB,CACnD,MAAME,EAAW,KAAK,IAAI9zB,EAAI4zB,EAAoB9zB,CAAM,EAClDqiB,EAAQpiB,EAAM,SAASC,EAAG8zB,CAAQ,EACxCD,EAAO,KAAK,OAAO,aAAa,MAAM,KAAM1R,CAAK,CAAC,CACnD,CACD,OAAO0R,EAAO,KAAK,EAAE,CACvB,CACA,SAASE,GAAcC,EAAK,CACtB,OAAOA,GAAQ,UACjBpB,GAAY,oCAAoC,EAElD,MAAM9yB,EAASk0B,EAAI,OACbj0B,EAAQ,IAAI,WAAWD,CAAM,EACnC,QAAS,EAAI,EAAG,EAAIA,EAAQ,EAAE,EAC5BC,EAAM,CAAC,EAAIi0B,EAAI,WAAW,CAAC,EAAI,IAEjC,OAAOj0B,CACT,CACA,SAASk0B,GAASxrB,EAAO,CACvB,OAAO,OAAO,aAAaA,GAAS,GAAK,IAAMA,GAAS,GAAK,IAAMA,GAAS,EAAI,IAAMA,EAAQ,GAAI,CACpG,CAIA,SAASyrB,GAAcvf,EAAK,CAC1B,MAAMka,EAAM,OAAO,OAAO,IAAI,EAC9B,SAAW,CAAC7sB,EAAKyG,CAAK,IAAKkM,EACzBka,EAAI7sB,CAAG,EAAIyG,EAEb,OAAOomB,CACT,CACA,SAASsF,IAAiB,CACxB,MAAMC,EAAU,IAAI,WAAW,CAAC,EAChC,OAAAA,EAAQ,CAAC,EAAI,EACE,IAAI,YAAYA,EAAQ,OAAQ,EAAG,CAAC,EACrC,CAAC,IAAM,CACvB,CACA,SAASC,IAAkB,CACzB,GAAI,CACF,WAAI,SAAS,EAAE,EACR,EACX,MAAU,CACN,MAAO,EACR,CACH,CACA,MAAM3E,EAAiB,CACrB,WAAW,gBAAiB,CAC1B,OAAOmC,GAAO,KAAM,iBAAkBsC,GAAgB,EACvD,CACD,WAAW,iBAAkB,CAC3B,OAAOtC,GAAO,KAAM,kBAAmBwC,GAAiB,EACzD,CACD,WAAW,4BAA6B,CACtC,OAAOxC,GAAO,KAAM,6BAA8B,OAAO,gBAAoB,GAAW,CACzF,CACD,WAAW,yBAA0B,CACnC,OAAOA,GAAO,KAAM,0BAA2B,OAAO,aAAiB,GAAW,CACnF,CACD,WAAW,UAAW,CACpB,GAAI,OAAO,UAAc,KAAe,OAAO,iCAAW,WAAa,UAAY,OAAO,iCAAW,YAAc,SAAU,CAC3H,KAAM,CACJ,SAAAyC,EACA,UAAAC,CACD,EAAG,UACJ,OAAO1C,GAAO,KAAM,WAAY,CAC9B,UAAW0C,EAAU,SAAS,SAAS,EACvC,QAASD,EAAS,SAAS,OAAO,EAClC,MAAOA,EAAS,SAAS,KAAK,EAC9B,UAAWA,EAAS,SAAS,KAAK,EAClC,UAAWC,EAAU,SAAS,SAAS,CAC/C,CAAO,CACF,CACD,OAAO1C,GAAO,KAAM,WAAY,CAC9B,UAAW,GACX,QAAS,GACT,MAAO,GACP,UAAW,GACX,UAAW,EACjB,CAAK,CACF,CACD,WAAW,qBAAsB,SAC/B,OAAOA,GAAO,KAAM,uBAAuB2C,GAAAC,EAAA,WAAW,MAAX,YAAAA,EAAgB,WAAhB,YAAAD,EAAA,KAAAC,EAA2B,2BAA2B,CAClG,CACH,CACA,MAAMC,GAAa,MAAM,KAAK,MAAM,GAAG,EAAE,OAAQvJ,GAAKA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,kBACrF,MAAM7X,EAAK,CACT,OAAO,aAAa4X,EAAGW,EAAG9mB,EAAG,CAC3B,MAAO,IAAI2vB,GAAWxJ,CAAC,CAAC,GAAGwJ,GAAW7I,CAAC,CAAC,GAAG6I,GAAW3vB,CAAC,CAAC,EACzD,CACD,OAAO,YAAY4vB,EAAWC,EAAQ,CACpC,IAAIC,EACAF,EAAU,CAAC,GACTA,EAAU,CAAC,EAAI,IACjBE,EAAOD,EAAO,CAAC,EACfA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpBA,EAAO,CAAC,EAAIC,GAEdD,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,EACpBA,EAAU,CAAC,EAAI,IACjBE,EAAOD,EAAO,CAAC,EACfA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpBA,EAAO,CAAC,EAAIC,GAEdD,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,IAExBE,EAAOD,EAAO,CAAC,EACfA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpBA,EAAO,CAAC,EAAIC,EACZA,EAAOD,EAAO,CAAC,EACfA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpBA,EAAO,CAAC,EAAIC,EACRF,EAAU,CAAC,EAAI,IACjBE,EAAOD,EAAO,CAAC,EACfA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpBA,EAAO,CAAC,EAAIC,GAEdD,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,EACpBA,EAAU,CAAC,EAAI,IACjBE,EAAOD,EAAO,CAAC,EACfA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpBA,EAAO,CAAC,EAAIC,GAEdD,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,GAE1BC,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,EACxBC,EAAO,CAAC,GAAKD,EAAU,CAAC,CACzB,CACD,OAAO,UAAUG,EAAIC,EAAI,CACvB,MAAO,CAACD,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAGD,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAGD,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAGD,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAGD,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAGA,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,CAAC,CACjN,CACD,OAAO,eAAexuB,EAAGyN,EAAG,CAC1B,MAAMihB,EAAK1uB,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIzN,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIA,EAAE,CAAC,EACpCkhB,EAAK3uB,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIzN,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIA,EAAE,CAAC,EAC1C,MAAO,CAACihB,EAAIC,CAAE,CACf,CACD,OAAO,sBAAsB3uB,EAAGyN,EAAG,CACjC,MAAM/G,EAAI+G,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAC5BihB,GAAM1uB,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIzN,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK/G,EAC/DioB,GAAM,CAAC3uB,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIzN,EAAE,CAAC,EAAIyN,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK/G,EACtE,MAAO,CAACgoB,EAAIC,CAAE,CACf,CACD,OAAO,2BAA2B/J,EAAGnX,EAAG,CACtC,MAAMmhB,EAAK,KAAK,eAAehK,EAAGnX,CAAC,EAC7BohB,EAAK,KAAK,eAAejK,EAAE,MAAM,EAAG,CAAC,EAAGnX,CAAC,EACzCqhB,EAAK,KAAK,eAAe,CAAClK,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAGnX,CAAC,EACxCshB,EAAK,KAAK,eAAe,CAACnK,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAGnX,CAAC,EAC9C,MAAO,CAAC,KAAK,IAAImhB,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,EAAG,KAAK,IAAIH,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,EAAG,KAAK,IAAIH,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,EAAG,KAAK,IAAIH,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,CAAC,CAC/J,CACD,OAAO,iBAAiBthB,EAAG,CACzB,MAAM/G,EAAI+G,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAClC,MAAO,CAACA,EAAE,CAAC,EAAI/G,EAAG,CAAC+G,EAAE,CAAC,EAAI/G,EAAG,CAAC+G,EAAE,CAAC,EAAI/G,EAAG+G,EAAE,CAAC,EAAI/G,GAAI+G,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK/G,GAAI+G,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK/G,CAAC,CACnH,CACD,OAAO,8BAA8B+G,EAAG,CACtC,MAAMuhB,EAAY,CAACvhB,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACnCjP,EAAIiP,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAAIvhB,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAC5CvwB,EAAIgP,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAAIvhB,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAC5ChoB,EAAIyG,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAAIvhB,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAC5CtoB,EAAI+G,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAAIvhB,EAAE,CAAC,EAAIuhB,EAAU,CAAC,EAC5CC,GAASzwB,EAAIkI,GAAK,EAClBwoB,EAAS,KAAK,MAAM1wB,EAAIkI,IAAM,EAAI,GAAKlI,EAAIkI,EAAIM,EAAIvI,EAAE,EAAI,EACzD0wB,EAAKF,EAAQC,GAAU,EACvBE,EAAKH,EAAQC,GAAU,EAC7B,MAAO,CAAC,KAAK,KAAKC,CAAE,EAAG,KAAK,KAAKC,CAAE,CAAC,CACrC,CACD,OAAO,cAAcC,EAAM,CACzB,MAAMzK,EAAIyK,EAAK,MAAM,CAAC,EACtB,OAAIA,EAAK,CAAC,EAAIA,EAAK,CAAC,IAClBzK,EAAE,CAAC,EAAIyK,EAAK,CAAC,EACbzK,EAAE,CAAC,EAAIyK,EAAK,CAAC,GAEXA,EAAK,CAAC,EAAIA,EAAK,CAAC,IAClBzK,EAAE,CAAC,EAAIyK,EAAK,CAAC,EACbzK,EAAE,CAAC,EAAIyK,EAAK,CAAC,GAERzK,CACR,CACD,OAAO,UAAU0K,EAAOC,EAAO,CAC7B,MAAMC,EAAO,KAAK,IAAI,KAAK,IAAIF,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAAG,KAAK,IAAIC,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAAC,EAC1EE,EAAQ,KAAK,IAAI,KAAK,IAAIH,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAAG,KAAK,IAAIC,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAAC,EACjF,GAAIC,EAAOC,EACT,OAAO,KAET,MAAMC,EAAO,KAAK,IAAI,KAAK,IAAIJ,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAAG,KAAK,IAAIC,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAAC,EAC1EI,EAAQ,KAAK,IAAI,KAAK,IAAIL,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAAG,KAAK,IAAIC,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAAC,EACjF,OAAIG,EAAOC,EACF,KAEF,CAACH,EAAME,EAAMD,EAAOE,CAAK,CACjC,CA+BD,OAAO,kBAAkBC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI7B,EAAQ,CAC/D,OAAIA,GACFA,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAGsB,EAAIM,CAAE,EACtC5B,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAGuB,EAAIM,CAAE,EACtC7B,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAGsB,EAAIM,CAAE,EACtC5B,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAGuB,EAAIM,CAAE,GAEtC7B,EAAS,CAAC,KAAK,IAAIsB,EAAIM,CAAE,EAAG,KAAK,IAAIL,EAAIM,CAAE,EAAG,KAAK,IAAIP,EAAIM,CAAE,EAAG,KAAK,IAAIL,EAAIM,CAAE,CAAC,EAElFC,EAAA,KAAKC,GAAAC,IAAL,UAAkBV,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,EAAI,GAAK,CAACP,EAAK,GAAKE,EAAKE,GAAME,GAAK,GAAKN,EAAK,EAAIE,EAAKE,GAAK,GAAKF,EAAKF,GAAKtB,GACzH8B,EAAA,KAAKC,GAAAC,IAAL,UAAkBV,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,EAAI,GAAK,CAACN,EAAK,GAAKE,EAAKE,GAAME,GAAK,GAAKN,EAAK,EAAIE,EAAKE,GAAK,GAAKF,EAAKF,GAAKvB,GAClHA,CACR,CACH,CA3CSiC,GAAA,YAAAC,GAAmB,SAACZ,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,EAAI/O,EAAGkN,EAAQ,CACpE,GAAIlN,GAAK,GAAKA,GAAK,EACjB,OAEF,MAAMqP,EAAK,EAAIrP,EACTsP,EAAKtP,EAAIA,EACTuP,EAAMD,EAAKtP,EACX6D,EAAIwL,GAAMA,GAAMA,EAAKb,EAAK,EAAIxO,EAAI0O,GAAM,EAAIY,EAAKV,GAAMW,EAAMT,EAC7D1K,EAAIiL,GAAMA,GAAMA,EAAKZ,EAAK,EAAIzO,EAAI2O,GAAM,EAAIW,EAAKT,GAAMU,EAAMR,EACnE7B,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAGrJ,CAAC,EACjCqJ,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAG9I,CAAC,EACjC8I,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAGrJ,CAAC,EACjCqJ,EAAO,CAAC,EAAI,KAAK,IAAIA,EAAO,CAAC,EAAG9I,CAAC,CAClC,EACM6K,GAAA,YAAAC,GAAY,SAACV,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,EAAI3xB,EAAGC,EAAGuI,EAAGsnB,EAAQ,CACnE,GAAI,KAAK,IAAI9vB,CAAC,EAAI,MAAO,CACnB,KAAK,IAAIC,CAAC,GAAK,OACjB2xB,EAAA,KAAKG,GAAAC,IAAL,UAAyBZ,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,EAAI,CAACnpB,EAAIvI,EAAG6vB,GAEnE,MACD,CACD,MAAMsC,EAAQnyB,GAAK,EAAI,EAAIuI,EAAIxI,EAC/B,GAAIoyB,EAAQ,EACV,OAEF,MAAMC,EAAY,KAAK,KAAKD,CAAK,EAC3BE,EAAK,EAAItyB,EACf4xB,EAAA,KAAKG,GAAAC,IAAL,UAAyBZ,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,GAAK,CAAC1xB,EAAIoyB,GAAaC,EAAIxC,GAChF8B,EAAA,KAAKG,GAAAC,IAAL,UAAyBZ,EAAIE,EAAIE,EAAIE,EAAIL,EAAIE,EAAIE,EAAIE,GAAK,CAAC1xB,EAAIoyB,GAAaC,EAAIxC,EACjF,EA7BDyC,EA9GI/jB,GA8GGujB,IAcPQ,EA5HI/jB,GA4HGqjB,IA2ET,SAASzD,GAAmBc,EAAK,CAC/B,OAAO,mBAAmB,OAAOA,CAAG,CAAC,CACvC,CAmBA,IAAIsD,GAAiB,KACjBC,GAAmB,KACvB,SAAS5F,GAAiBqC,EAAK,CAC7B,OAAKsD,KACHA,GAAiB,2UACjBC,GAAmB,IAAI,IAAI,CAAC,CAAC,IAAK,IAAI,CAAC,CAAC,GAEnCvD,EAAI,WAAWsD,GAAgB,CAAC9iB,EAAG0gB,EAAIC,IAAOD,EAAKA,EAAG,UAAU,MAAM,EAAIqC,GAAiB,IAAIpC,CAAE,CAAC,CAC3G,CACA,SAAS9D,IAAU,CACjB,GAAI,OAAO,OAAO,YAAe,WAC/B,OAAO,OAAO,aAEhB,MAAMmG,EAAM,IAAI,WAAW,EAAE,EAC7B,cAAO,gBAAgBA,CAAG,EACnB7D,GAAc6D,CAAG,CAC1B,CACA,MAAMC,GAAmB,qBACzB,SAASC,GAAqBC,EAAUC,EAAWpyB,EAAM,CACvD,GAAI,CAAC,MAAM,QAAQA,CAAI,GAAKA,EAAK,OAAS,EACxC,MAAO,GAET,KAAM,CAACC,EAAMoyB,EAAM,GAAGtkB,CAAI,EAAI/N,EAI9B,GAHI,CAACmyB,EAASlyB,CAAI,GAAK,CAAC,OAAO,UAAUA,CAAI,GAGzC,CAACmyB,EAAUC,CAAI,EACjB,MAAO,GAET,MAAMC,EAAUvkB,EAAK,OACrB,IAAIwkB,EAAY,GAChB,OAAQF,EAAK,KAAI,CACf,IAAK,MACH,GAAIC,EAAU,GAAKA,EAAU,EAC3B,MAAO,GAET,MACF,IAAK,MACL,IAAK,OACH,OAAOA,IAAY,EACrB,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,QACH,GAAIA,EAAU,EACZ,MAAO,GAET,MACF,IAAK,OACH,GAAIA,IAAY,EACd,MAAO,GAETC,EAAY,GACZ,MACF,QACE,MAAO,EACV,CACD,UAAWC,KAAOzkB,EAChB,GAAI,SAAOykB,GAAQ,UAAYD,GAAaC,IAAQ,MAGpD,MAAO,GAET,MAAO,EACT,CACA,SAASlI,GAAUzE,EAAGvc,EAAKyU,EAAK,CAC9B,OAAO,KAAK,IAAI,KAAK,IAAI8H,EAAGvc,CAAG,EAAGyU,CAAG,CACvC,CAOA,SAAS0U,GAAa5tB,EAAK,CACzB,OAAI,WAAW,UAAU,SAChBA,EAAI,WAEN,KAAKspB,GAActpB,CAAG,CAAC,CAChC,CACA,SAAS6tB,GAAelE,EAAK,CAC3B,OAAI,WAAW,WACN,WAAW,WAAWA,CAAG,EAE3BD,GAAc,KAAKC,CAAG,CAAC,CAChC,CACI,OAAO,QAAQ,KAAQ,aACzB,QAAQ,IAAM,SAAUhL,KAAOzV,EAAM,CACnC,OAAO,IAAI,QAAQuI,GAAW,CAC5BA,EAAQkN,EAAG,GAAGzV,CAAI,CAAC,CACzB,CAAK,CACL,GAKA,MAAM4kB,GAAS,6BACTC,GAAN,MAAMA,EAAc,CAIpB,EAHEv2B,GADIu2B,GACG,MAAM,IACbv2B,GAFIu2B,GAEG,MAAM,IACbv2B,GAHIu2B,GAGG,mBAAmBA,GAAK,IAAMA,GAAK,KAH5C,IAAM9H,GAAN8H,GAKA,eAAenH,GAAU9zB,EAAK+M,EAAO,OAAQ,CAC3C,GAAImuB,GAAgBl7B,EAAK,SAAS,OAAO,EAAG,CAC1C,MAAME,EAAW,MAAM,MAAMF,CAAG,EAChC,GAAI,CAACE,EAAS,GACZ,MAAM,IAAI,MAAMA,EAAS,UAAU,EAErC,OAAQ6M,EAAI,CACV,IAAK,cACH,OAAO7M,EAAS,cAClB,IAAK,OACH,OAAOA,EAAS,OAClB,IAAK,OACH,OAAOA,EAAS,MACnB,CACD,OAAOA,EAAS,MACjB,CACD,OAAO,IAAI,QAAQ,CAACye,EAASC,IAAW,CACtC,MAAMhM,EAAU,IAAI,eACpBA,EAAQ,KAAK,MAAO5S,EAAK,EAAI,EAC7B4S,EAAQ,aAAe7F,EACvB6F,EAAQ,mBAAqB,IAAM,CACjC,GAAIA,EAAQ,aAAe,eAAe,KAG1C,IAAIA,EAAQ,SAAW,KAAOA,EAAQ,SAAW,EAAG,CAClD,OAAQ7F,EAAI,CACV,IAAK,cACL,IAAK,OACL,IAAK,OACH4R,EAAQ/L,EAAQ,QAAQ,EACxB,MACH,CACD+L,EAAQ/L,EAAQ,YAAY,EAC5B,MACD,CACDgM,EAAO,IAAI,MAAMhM,EAAQ,UAAU,CAAC,EAC1C,EACIA,EAAQ,KAAK,IAAI,CACrB,CAAG,CACH,CACA,MAAMuoB,EAAa,CACjB,YAAY,CACV,QAAAC,EACA,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EAAU,EACV,QAAAC,EAAU,EACV,SAAAC,EAAW,EACf,EAAK,CACD,KAAK,QAAUN,EACf,KAAK,SAAWC,EAChB,KAAK,MAAQC,EACb,KAAK,SAAWC,EAChB,KAAK,QAAUC,EACf,KAAK,QAAUC,EACfH,GAASD,EACT,MAAMM,GAAWP,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAK,EACtCQ,GAAWR,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAK,EAC5C,IAAIS,EAASC,EAASC,EAASC,EAK/B,OAJAT,GAAY,IACRA,EAAW,IACbA,GAAY,KAENA,EAAQ,CACd,IAAK,KACHM,EAAU,GACVC,EAAU,EACVC,EAAU,EACVC,EAAU,EACV,MACF,IAAK,IACHH,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,EAAU,EACV,MACF,IAAK,KACHH,EAAU,EACVC,EAAU,GACVC,EAAU,GACVC,EAAU,EACV,MACF,IAAK,GACHH,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,EAAU,GACV,MACF,QACE,MAAM,IAAI,MAAM,mEAAmE,CACtF,CACGN,IACFK,EAAU,CAACA,EACXC,EAAU,CAACA,GAEb,IAAIC,EAAeC,EACfn3B,EAAOR,EACPs3B,IAAY,GACdI,EAAgB,KAAK,IAAIL,EAAUR,EAAQ,CAAC,CAAC,EAAIE,EAAQE,EACzDU,EAAgB,KAAK,IAAIP,EAAUP,EAAQ,CAAC,CAAC,EAAIE,EAAQG,EACzD12B,GAASq2B,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAKE,EACpC/2B,GAAU62B,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAKE,IAErCW,EAAgB,KAAK,IAAIN,EAAUP,EAAQ,CAAC,CAAC,EAAIE,EAAQE,EACzDU,EAAgB,KAAK,IAAIN,EAAUR,EAAQ,CAAC,CAAC,EAAIE,EAAQG,EACzD12B,GAASq2B,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAKE,EACpC/2B,GAAU62B,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAKE,GAEvC,KAAK,UAAY,CAACO,EAAUP,EAAOQ,EAAUR,EAAOS,EAAUT,EAAOU,EAAUV,EAAOW,EAAgBJ,EAAUP,EAAQK,EAAUI,EAAUT,EAAQM,EAASM,EAAgBJ,EAAUR,EAAQK,EAAUK,EAAUV,EAAQM,CAAO,EAClO,KAAK,MAAQ72B,EACb,KAAK,OAASR,CACf,CACD,IAAI,SAAU,CACZ,MAAM43B,EAAO,KAAK,QAClB,OAAOzH,GAAO,KAAM,UAAW,CAC7B,UAAWyH,EAAK,CAAC,EAAIA,EAAK,CAAC,EAC3B,WAAYA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAC5B,MAAOA,EAAK,CAAC,EACb,MAAOA,EAAK,CAAC,CACnB,CAAK,CACF,CACD,MAAM,CACJ,MAAAb,EAAQ,KAAK,MACb,SAAAC,EAAW,KAAK,SAChB,QAAAC,EAAU,KAAK,QACf,QAAAC,EAAU,KAAK,QACf,SAAAC,EAAW,EACZ,EAAG,GAAI,CACN,OAAO,IAAIP,GAAa,CACtB,QAAS,KAAK,QAAQ,MAAO,EAC7B,SAAU,KAAK,SACf,MAAAG,EACA,SAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,CACN,CAAK,CACF,CACD,uBAAuBtN,EAAGO,EAAG,CAC3B,OAAOxY,GAAK,eAAe,CAACiY,EAAGO,CAAC,EAAG,KAAK,SAAS,CAClD,CACD,2BAA2B6J,EAAM,CAC/B,MAAM4D,EAAUjmB,GAAK,eAAe,CAACqiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAG,KAAK,SAAS,EAChE6D,EAAclmB,GAAK,eAAe,CAACqiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAG,KAAK,SAAS,EAC1E,MAAO,CAAC4D,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGC,EAAY,CAAC,EAAGA,EAAY,CAAC,CAAC,CAC/D,CACD,kBAAkBjO,EAAGO,EAAG,CACtB,OAAOxY,GAAK,sBAAsB,CAACiY,EAAGO,CAAC,EAAG,KAAK,SAAS,CACzD,CACH,CACA,MAAMyE,WAAoC8C,EAAc,CACtD,YAAYviB,EAAK2oB,EAAa,EAAG,CAC/B,MAAM3oB,EAAK,6BAA6B,EACxC,KAAK,WAAa2oB,CACnB,CACH,CACA,SAASlI,GAAap0B,EAAK,CACzB,MAAMu8B,EAAKv8B,EAAI,OACf,IAAI6C,EAAI,EACR,KAAOA,EAAI05B,GAAMv8B,EAAI6C,CAAC,EAAE,KAAM,IAAK,IACjCA,IAEF,OAAO7C,EAAI,UAAU6C,EAAGA,EAAI,CAAC,EAAE,YAAa,IAAK,OACnD,CACA,SAASwxB,GAAU9nB,EAAU,CAC3B,OAAO,OAAOA,GAAa,UAAY,UAAU,KAAKA,CAAQ,CAChE,CACA,SAASynB,GAAmBh0B,EAAK,CAC/B,OAACA,CAAG,EAAIA,EAAI,MAAM,OAAQ,CAAC,EACpBA,EAAI,UAAUA,EAAI,YAAY,GAAG,EAAI,CAAC,CAC/C,CACA,SAASi0B,GAAsBj0B,EAAKw8B,EAAkB,eAAgB,CACpE,GAAI,OAAOx8B,GAAQ,SACjB,OAAOw8B,EAET,GAAIpI,GAAap0B,CAAG,EAClB,OAAAw1B,GAAK,oEAAoE,EAClEgH,EAET,MAAMC,EAAQ,sDACRC,EAAa,gCACbC,EAAWF,EAAM,KAAKz8B,CAAG,EAC/B,IAAI48B,EAAoBF,EAAW,KAAKC,EAAS,CAAC,CAAC,GAAKD,EAAW,KAAKC,EAAS,CAAC,CAAC,GAAKD,EAAW,KAAKC,EAAS,CAAC,CAAC,EACnH,GAAIC,IACFA,EAAoBA,EAAkB,CAAC,EACnCA,EAAkB,SAAS,GAAG,GAChC,GAAI,CACFA,EAAoBF,EAAW,KAAK,mBAAmBE,CAAiB,CAAC,EAAE,CAAC,CAC7E,MAAO,CAAE,CAGd,OAAOA,GAAqBJ,CAC9B,CACA,MAAMK,EAAU,CAAhB,cACEn4B,GAAA,eAAU,OAAO,OAAO,IAAI,GAC5BA,GAAA,aAAQ,IACR,KAAK2K,EAAM,CACLA,KAAQ,KAAK,SACfmmB,GAAK,gCAAgCnmB,CAAI,EAAE,EAE7C,KAAK,QAAQA,CAAI,EAAI,KAAK,IAAG,CAC9B,CACD,QAAQA,EAAM,CACNA,KAAQ,KAAK,SACjBmmB,GAAK,kCAAkCnmB,CAAI,EAAE,EAE/C,KAAK,MAAM,KAAK,CACd,KAAAA,EACA,MAAO,KAAK,QAAQA,CAAI,EACxB,IAAK,KAAK,IAAK,CACrB,CAAK,EACD,OAAO,KAAK,QAAQA,CAAI,CACzB,CACD,UAAW,CACT,MAAMytB,EAAS,GACf,IAAIC,EAAU,EACd,SAAW,CACT,KAAA1tB,CACN,IAAS,KAAK,MACR0tB,EAAU,KAAK,IAAI1tB,EAAK,OAAQ0tB,CAAO,EAEzC,SAAW,CACT,KAAA1tB,EACA,MAAA2tB,EACA,IAAAC,CACN,IAAS,KAAK,MACRH,EAAO,KAAK,GAAGztB,EAAK,OAAO0tB,CAAO,CAAC,IAAIE,EAAMD,CAAK;AAAA,CAAM,EAE1D,OAAOF,EAAO,KAAK,EAAE,CACtB,CACH,CACA,SAAS5B,GAAgBl7B,EAAK61B,EAAS,CACrC,MAAMhM,EAAMgM,EAAU,IAAI,MAAM71B,EAAK61B,CAAO,EAAI,IAAI,MAAM71B,CAAG,EAC7D,OAAO6pB,GAAA,YAAAA,EAAK,YAAa,UAAWA,GAAA,YAAAA,EAAK,YAAa,QACxD,CACA,SAAS0K,GAAcvuB,EAAG,CACxBA,EAAE,eAAc,CAClB,CACA,SAAS2uB,GAAU3uB,EAAG,CACpBA,EAAE,eAAc,EAChBA,EAAE,gBAAe,CACnB,QAIA,MAAM+sB,EAAc,CAElB,OAAO,aAAamK,EAAO,CACzB,GAAI,CAACA,GAAS,OAAOA,GAAU,SAC7B,OAAO,KAETC,EAAA,KAAKC,KAALC,EAAA,KAAKD,GAAW,IAAI,OAAO,0FAAiJ,GAC5K,MAAME,EAAUH,EAAA,KAAKC,IAAO,KAAKF,CAAK,EACtC,GAAI,CAACI,EACH,OAAO,KAET,MAAMC,EAAO,SAASD,EAAQ,CAAC,EAAG,EAAE,EACpC,IAAIE,EAAQ,SAASF,EAAQ,CAAC,EAAG,EAAE,EACnCE,EAAQA,GAAS,GAAKA,GAAS,GAAKA,EAAQ,EAAI,EAChD,IAAIC,EAAM,SAASH,EAAQ,CAAC,EAAG,EAAE,EACjCG,EAAMA,GAAO,GAAKA,GAAO,GAAKA,EAAM,EACpC,IAAIC,EAAO,SAASJ,EAAQ,CAAC,EAAG,EAAE,EAClCI,EAAOA,GAAQ,GAAKA,GAAQ,GAAKA,EAAO,EACxC,IAAIC,EAAS,SAASL,EAAQ,CAAC,EAAG,EAAE,EACpCK,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,IAAItF,EAAS,SAASiF,EAAQ,CAAC,EAAG,EAAE,EACpCjF,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,MAAMuF,EAAwBN,EAAQ,CAAC,GAAK,IAC5C,IAAIO,EAAa,SAASP,EAAQ,CAAC,EAAG,EAAE,EACxCO,EAAaA,GAAc,GAAKA,GAAc,GAAKA,EAAa,EAChE,IAAIC,EAAe,SAASR,EAAQ,CAAC,EAAG,EAAE,GAAK,EAC/C,OAAAQ,EAAeA,GAAgB,GAAKA,GAAgB,GAAKA,EAAe,EACpEF,IAA0B,KAC5BF,GAAQG,EACRF,GAAUG,GACDF,IAA0B,MACnCF,GAAQG,EACRF,GAAUG,GAEL,IAAI,KAAK,KAAK,IAAIP,EAAMC,EAAOC,EAAKC,EAAMC,EAAQtF,CAAM,CAAC,CACjE,CACH,CAnCS+E,GAAA,YAAPlD,EADInH,GACGqK,GAAP,QAoCF,SAASjJ,GAAmB4J,EAAS,CACnC,MAAAzC,EAAQ,EACR,SAAAC,EAAW,CACb,EAAG,CACD,KAAM,CACJ,MAAAx2B,EACA,OAAAR,CACJ,EAAMw5B,EAAQ,WAAW,MACjB3C,EAAU,CAAC,EAAG,EAAG,SAASr2B,CAAK,EAAG,SAASR,CAAM,CAAC,EACxD,OAAO,IAAI42B,GAAa,CACtB,QAAAC,EACA,SAAU,EACV,MAAAE,EACA,SAAAC,CACJ,CAAG,CACH,CACA,SAASyC,GAAOC,EAAO,CACrB,GAAIA,EAAM,WAAW,GAAG,EAAG,CACzB,MAAMC,EAAW,SAASD,EAAM,MAAM,CAAC,EAAG,EAAE,EAC5C,MAAO,EAAEC,EAAW,WAAa,IAAKA,EAAW,QAAa,EAAGA,EAAW,GAAQ,CACrF,CACD,OAAID,EAAM,WAAW,MAAM,EAClBA,EAAM,MAAM,EAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI7P,GAAK,SAASA,CAAC,CAAC,EAEvD6P,EAAM,WAAW,OAAO,EACnBA,EAAM,MAAM,EAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI7P,GAAK,SAASA,CAAC,CAAC,EAAE,MAAM,EAAG,CAAC,GAEvEoH,GAAK,8BAA8ByI,CAAK,GAAG,EACpC,CAAC,EAAG,EAAG,CAAC,EACjB,CACA,SAASE,GAAeC,EAAQ,CAC9B,MAAMC,EAAO,SAAS,cAAc,MAAM,EAC1CA,EAAK,MAAM,WAAa,SACxB,SAAS,KAAK,OAAOA,CAAI,EACzB,UAAWhvB,KAAQ+uB,EAAO,OAAQ,CAChCC,EAAK,MAAM,MAAQhvB,EACnB,MAAMivB,EAAgB,OAAO,iBAAiBD,CAAI,EAAE,MACpDD,EAAO,IAAI/uB,EAAM2uB,GAAOM,CAAa,CAAC,CACvC,CACDD,EAAK,OAAM,CACb,CACA,SAASE,GAAoB96B,EAAK,CAChC,KAAM,CACJ,EAAAkE,EACA,EAAAC,EACA,EAAAuI,EACA,EAAAN,EACA,EAAA7J,EACA,EAAA8C,CACJ,EAAMrF,EAAI,eACR,MAAO,CAACkE,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,CAC1B,CACA,SAAS01B,GAA2B/6B,EAAK,CACvC,KAAM,CACJ,EAAAkE,EACA,EAAAC,EACA,EAAAuI,EACA,EAAAN,EACA,EAAA7J,EACA,EAAA8C,CACD,EAAGrF,EAAI,eAAe,aACvB,MAAO,CAACkE,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,CAC1B,CACA,SAAS2rB,GAAmBgK,EAAKC,EAAUC,EAAW,GAAOC,EAAa,GAAM,CAC9E,GAAIF,aAAoBvD,GAAc,CACpC,KAAM,CACJ,UAAA0D,EACA,WAAAC,CACN,EAAQJ,EAAS,QACP,CACJ,MAAAK,CACD,EAAGN,EACEO,EAAWzM,GAAiB,oBAC5BpE,EAAI,+BAA+B0Q,CAAS,KAChDpQ,EAAI,+BAA+BqQ,CAAU,KACzCG,EAAWD,EAAW,eAAe7Q,CAAC,0BAA4B,QAAQA,CAAC,IAC/E+Q,EAAYF,EAAW,eAAevQ,CAAC,0BAA4B,QAAQA,CAAC,IAC1E,CAACkQ,GAAYD,EAAS,SAAW,MAAQ,GAC3CK,EAAM,MAAQE,EACdF,EAAM,OAASG,IAEfH,EAAM,MAAQG,EACdH,EAAM,OAASE,EAElB,CACGL,GACFH,EAAI,aAAa,qBAAsBC,EAAS,QAAQ,CAE5D,CACA,MAAM7L,EAAY,CAChB,aAAc,CACZ,KAAM,CACJ,WAAAsM,CACD,EAAGtM,GACJ,KAAK,GAAKsM,EACV,KAAK,GAAKA,CACX,CACD,IAAI,QAAS,CACX,OAAO,KAAK,KAAO,GAAK,KAAK,KAAO,CACrC,CACD,IAAI,WAAY,CACd,OAAO,KAAK,KAAO,KAAK,EACzB,CACD,YAAYp6B,EAAOR,EAAQ66B,EAAWC,EAAQ,CAC5C,IAAIC,EAAe,IACjBC,EAAgB,IAChBC,EAAiB,IACfJ,EAAY,IACdE,EAAe,KAAK,KAAKF,GAAar6B,EAAQR,EAAO,GAEnD86B,IAAW,KACbE,EAAgBF,EAASt6B,EACzBy6B,EAAiBH,EAAS96B,GAE5B,MAAMk7B,EAAW,KAAK,IAAIH,EAAcC,EAAeC,CAAc,EACrE,OAAI,KAAK,GAAKC,GAAY,KAAK,GAAKA,GAClC,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IAEF,EACR,CACD,WAAW,YAAa,CACtB,OAAO,WAAW,kBAAoB,CACvC,CACH,CACA,MAAMlM,GAA0B,CAAC,aAAc,aAAc,YAAa,YAAa,aAAc,YAAa,gBAAiB,aAAc,cAAc,+DAI/J,MAAMmM,GAAN,MAAMA,EAAc,CAQlB,YAAYC,EAAQ,CA0CpBzF,EAAA,KAAA0F,IAIA1F,EAAA,KAAA2F,IAIA3F,EAAA,KAAA4F,IAsBA5F,EAAA,KAAA6F,IAiBA7F,EAAA,KAAI8F,IAhGJ9F,EAAA,KAAA+F,GAAW,MACX/F,EAAA,KAAAgG,GAAe,MACfhG,EAAA,KAAAiG,GAAA,QACAjG,EAAA,KAAAkG,GAAW,MACXlG,EAAA,KAAAmG,GAAW,MACXnG,EAAA,KAAAoG,GAA8B,MAG5BjD,EAAA,KAAK8C,GAAUR,GACfxC,EAAAuC,GAAca,KAAdlD,EAAAqC,GAAca,GAAgB,OAAO,OAAO,CAC1C,SAAU,sCACV,UAAW,uCACX,IAAK,iCACL,MAAO,mCACP,UAAW,sCACjB,CAAK,EACF,CACD,QAAS,CACP,MAAMC,EAAcnD,EAAA,KAAK4C,GAAW,SAAS,cAAc,KAAK,GAChEO,EAAY,UAAU,IAAI,cAAe,QAAQ,EACjDA,EAAY,aAAa,OAAQ,SAAS,EAC1C,MAAMC,EAAStD,EAAA,KAAKgD,IAAQ,WAAW,QACvCK,EAAY,iBAAiB,cAAejM,GAAe,CACzD,OAAAkM,CACN,CAAK,EACDD,EAAY,iBAAiB,cAAejH,EAAAmG,GAAcgB,GAAAC,IAAc,CACtE,OAAAF,CACN,CAAK,EACD,MAAMG,EAAUvD,EAAA,KAAK+C,GAAW,SAAS,cAAc,KAAK,GAC5DQ,EAAQ,UAAY,UACpBJ,EAAY,OAAOI,CAAO,EAC1B,MAAMC,EAAW1D,EAAA,KAAKgD,IAAQ,gBAC9B,GAAIU,EAAU,CACZ,KAAM,CACJ,MAAA9B,CACD,EAAGyB,EACEpS,EAAI+O,EAAA,KAAKgD,IAAQ,WAAW,YAAc,MAAQ,EAAIU,EAAS,CAAC,EAAIA,EAAS,CAAC,EACpF9B,EAAM,eAAiB,GAAG,IAAM3Q,CAAC,IACjC2Q,EAAM,IAAM,QAAQ,IAAM8B,EAAS,CAAC,CAAC,wCACtC,CACD,OAAAtH,EAAA,KAAKwG,GAAAe,IAAL,WACON,CACR,CACD,IAAI,KAAM,CACR,OAAOrD,EAAA,KAAK8C,GACb,CA0BD,MAAO,OACL9C,EAAA,KAAK8C,IAAS,UAAU,IAAI,QAAQ,GACpC3I,EAAA6F,EAAA,KAAK+C,MAAL,MAAA5I,EAAmB,cACpB,CACD,MAAO,OACL6F,EAAA,KAAK8C,IAAS,UAAU,OAAO,QAAQ,GACvC3I,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,OAChB,CAuBD,MAAM,WAAWyJ,EAAS,CACxB,MAAMC,EAAS,MAAMD,EAAQ,SAC7BxH,EAAA,KAAKuG,GAAAmB,IAAL,UAA4BD,GAC5B7D,EAAA,KAAKiD,IAAS,QAAQY,EAAQ7D,EAAA,KAAK6C,GAAAkB,GAAQ,EAC3C7D,EAAA,KAAKgD,GAAWU,EACjB,CACD,eAAeI,EAAa,CAC1B9D,EAAA,KAAK6C,GAAeiB,GACpB,MAAMH,EAASG,EAAY,eAC3B5H,EAAA,KAAKuG,GAAAmB,IAAL,UAA4BD,GAC5B7D,EAAA,KAAKiD,IAAS,QAAQY,EAAQ7D,EAAA,KAAK6C,GAAAkB,GAAQ,CAC5C,CACD,MAAM,uBAAuBE,EAAkB,CAC7C,MAAMJ,EAAS3D,EAAA,KAAKiD,GAA8B,MAAMc,EAAiB,iBAAiBjE,EAAA,KAAKgD,GAAO,GACtG5G,EAAA,KAAKuG,GAAAmB,IAAL,UAA4BD,GAC5B7D,EAAA,KAAKiD,IAAS,QAAQY,EAAQ7D,EAAA,KAAK6C,GAAAkB,GAAQ,CAC5C,CACD,0BAA0BG,EAAa,CACjClE,EAAA,KAAKmD,MACPnD,EAAA,KAAKmD,IAA4B,MAAQe,EAE5C,CACD,QAAS,OACPlE,EAAA,KAAK8C,IAAS,UACd3I,EAAA6F,EAAA,KAAK+C,MAAL,MAAA5I,EAAmB,UACnB+F,EAAA,KAAK6C,GAAe,KACrB,CACH,EAhIED,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACOC,GAAA,YAwCAG,GAAA,YAAAC,GAAY,SAAC36B,EAAG,CACrBA,EAAE,gBAAe,CAClB,EACD45B,GAAA,YAAA0B,GAAQ,SAACt7B,EAAG,CACVm3B,EAAA,KAAKgD,IAAQ,oBAAsB,GACnCxL,GAAU3uB,CAAC,CACZ,EACD65B,GAAA,YAAA0B,GAAS,SAACv7B,EAAG,CACXm3B,EAAA,KAAKgD,IAAQ,oBAAsB,GACnCxL,GAAU3uB,CAAC,CACZ,EACD85B,GAAA,YAAAmB,GAAsB,SAACv3B,EAAS,CAC9B,MAAM+2B,EAAStD,EAAA,KAAKgD,IAAQ,WAAW,QACvCz2B,EAAQ,iBAAiB,UAAW6vB,EAAA,KAAKqG,GAAA0B,IAAS,KAAK,IAAI,EAAG,CAC5D,QAAS,GACT,OAAAb,CACN,CAAK,EACD/2B,EAAQ,iBAAiB,WAAY6vB,EAAA,KAAKsG,GAAA0B,IAAU,KAAK,IAAI,EAAG,CAC9D,QAAS,GACT,OAAAd,CACN,CAAK,EACD/2B,EAAQ,iBAAiB,cAAe6qB,GAAe,CACrD,OAAAkM,CACN,CAAK,CACF,EASDV,GAAA,YAAAe,GAAgB,UAAG,CACjB,KAAM,CACJ,WAAAU,EACA,WAAAC,CACN,EAAQtE,EAAA,KAAKgD,IACHa,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAY,SACnBA,EAAO,SAAW,EAClBA,EAAO,aAAa,eAAgB7D,EAAAuC,GAAca,IAAYiB,CAAU,CAAC,EACzEjI,EAAA,KAAKuG,GAAAmB,IAAL,UAA4BD,GAC5BA,EAAO,iBAAiB,QAASh7B,GAAK,CACpCy7B,EAAW,OAAM,CACvB,EAAO,CACD,OAAQA,EAAW,OACzB,CAAK,EACDtE,EAAA,KAAKiD,IAAS,OAAOY,CAAM,CAC5B,EACGhB,GAAA,YAAAkB,GAAQ,UAAG,CACb,MAAMQ,EAAU,SAAS,cAAc,KAAK,EAC5C,OAAAA,EAAQ,UAAY,UACbA,CACR,EAtDDxH,EA/CIwF,GA+CGgB,IAxCPxG,EAPIwF,GAOGa,GAAc,MAPvB,IAAMoB,GAANjC,kCAkIA,MAAMkC,EAAiB,CAIrB,YAAYC,EAAW,CAGvB3H,EAAA,KAAA4H,IAaA5H,EAAA,KAAA6H,IAoCA7H,EAAA,KAAA8H,IAvDA9H,EAAA,KAAAkG,GAAW,MACXlG,EAAA,KAAA+F,GAAW,MACX/F,EAAA,KAAAuH,GAAA,QAEEpE,EAAA,KAAKoE,GAAaI,EACnB,CAsCD,KAAKI,EAAQC,EAAOC,EAAO,CACzB,KAAM,CAAC/T,EAAGO,CAAC,EAAI4K,EAAA,KAAKwI,GAAAK,IAAL,UAAmBF,EAAOC,GACnC,CACJ,MAAApD,CACD,EAAG5B,EAAA,KAAK8C,KAAL5C,EAAA,KAAK4C,GAAa1G,EAAA,KAAKuI,GAAAO,IAAL,YACtBJ,EAAO,OAAO9E,EAAA,KAAK8C,GAAQ,EAC3BlB,EAAM,eAAiB,GAAG,IAAM3Q,CAAC,IACjC2Q,EAAM,IAAM,QAAQ,IAAMpQ,CAAC,wCAC5B,CACD,MAAO,CACLwO,EAAA,KAAK8C,IAAS,QACf,CAqBH,CA3EEG,GAAA,YACAH,GAAA,YACAwB,GAAA,YAIAK,GAAA,YAAAO,GAAO,UAAG,CACR,MAAM7B,EAAcnD,EAAA,KAAK4C,GAAW,SAAS,cAAc,KAAK,GAChEO,EAAY,UAAY,cACxBA,EAAY,aAAa,OAAQ,SAAS,EAC1CA,EAAY,iBAAiB,cAAejM,GAAe,CACzD,OAAQ4I,EAAA,KAAKsE,IAAW,OAC9B,CAAK,EACD,MAAMb,EAAUvD,EAAA,KAAK+C,GAAW,SAAS,cAAc,KAAK,GAC5D,OAAAQ,EAAQ,UAAY,UACpBJ,EAAY,OAAOI,CAAO,EAC1BrH,EAAA,KAAKyI,GAAAM,IAAL,WACO9B,CACR,EACDuB,GAAA,YAAAK,GAAa,SAACF,EAAOC,EAAO,CAC1B,IAAII,EAAQ,EACRC,EAAQ,EACZ,UAAWC,KAAOP,EAAO,CACvB,MAAMvT,EAAI8T,EAAI,EAAIA,EAAI,OACtB,GAAI9T,EAAI4T,EACN,SAEF,MAAMnU,EAAIqU,EAAI,GAAKN,EAAQM,EAAI,MAAQ,GACvC,GAAI9T,EAAI4T,EAAO,CACbC,EAAQpU,EACRmU,EAAQ5T,EACR,QACD,CACGwT,EACE/T,EAAIoU,IACNA,EAAQpU,GAEDA,EAAIoU,IACbA,EAAQpU,EAEX,CACD,MAAO,CAAC+T,EAAQ,EAAIK,EAAQA,EAAOD,CAAK,CACzC,EAaDP,GAAA,YAAAM,GAAmB,UAAG,CACpB,MAAMtB,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAY,kBACnBA,EAAO,SAAW,EAClBA,EAAO,aAAa,eAAgB,kCAAkC,EACtE,MAAM3C,EAAO,SAAS,cAAc,MAAM,EAC1C2C,EAAO,OAAO3C,CAAI,EAClBA,EAAK,UAAY,iBACjBA,EAAK,aAAa,eAAgB,uCAAuC,EACzE,MAAMoC,EAAStD,EAAA,KAAKsE,IAAW,QAC/BT,EAAO,iBAAiB,cAAezM,GAAe,CACpD,OAAAkM,CACN,CAAK,EACDO,EAAO,iBAAiB,QAAS,IAAM,CACrC7D,EAAA,KAAKsE,IAAW,mBAAmB,iBAAiB,CAC1D,EAAO,CACD,OAAAhB,CACN,CAAK,EACDtD,EAAA,KAAKiD,IAAS,OAAOY,CAAM,CAC5B,EAOH,SAAS0B,GAAWhR,EAAKhoB,EAAS6Q,EAAO,CACvC,UAAWlL,KAAQkL,EACjB7Q,EAAQ,iBAAiB2F,EAAMqiB,EAAIriB,CAAI,EAAE,KAAKqiB,CAAG,CAAC,CAEtD,QACA,MAAMiR,EAAU,CAAhB,cACEzI,EAAA,KAAA0I,GAAM,GACN,IAAI,IAAK,CACP,MAAO,GAAG1N,EAAsB,GAAG2N,GAAA,KAAKD,IAAL,GAAU,EAC9C,CACH,CAJEA,GAAA,+BAKF,MAAME,GAAN,MAAMA,EAAa,CAAnB,cAkBE5I,EAAA,KAAM6I,IAjBN7I,EAAA,KAAA8I,GAAU9O,GAAO,GACjBgG,EAAA,KAAA0I,GAAM,GACN1I,EAAA,KAAA+I,GAAS,MACT,WAAW,qBAAsB,CAC/B,MAAMC,EAAM,uKAENz/B,EADS,IAAI,gBAAgB,EAAG,CAAC,EACpB,WAAW,KAAM,CAClC,mBAAoB,EAC1B,CAAK,EACKpB,EAAQ,IAAI,MAClBA,EAAM,IAAM6gC,EACZ,MAAM9Y,EAAU/nB,EAAM,OAAQ,EAAC,KAAK,KAClCoB,EAAI,UAAUpB,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACpC,IAAI,YAAYoB,EAAI,aAAa,EAAG,EAAG,EAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,IAAM,EACzE,EACD,OAAOixB,GAAO,KAAM,sBAAuBtK,CAAO,CACnD,CA2DD,MAAM,YAAYnpB,EAAM,CACtB,KAAM,CACJ,aAAAkiC,EACA,KAAA9zB,EACA,KAAArD,EACA,KAAAe,CACD,EAAG9L,EACJ,OAAOs4B,EAAA,KAAKwJ,GAAAK,IAAL,UAAU,GAAGD,CAAY,IAAI9zB,CAAI,IAAIrD,CAAI,IAAIe,CAAI,GAAI9L,EAC7D,CACD,MAAM,WAAWjB,EAAK,CACpB,OAAOu5B,EAAA,KAAKwJ,GAAAK,IAAL,UAAUpjC,EAAKA,EACvB,CACD,MAAM,YAAYkS,EAAImxB,EAAa,CACjC,MAAMzT,EAAO,MAAMyT,EACnB,OAAO9J,EAAA,KAAKwJ,GAAAK,IAAL,UAAUlxB,EAAI0d,EACtB,CACD,MAAM,UAAU1d,EAAI,CAClBirB,EAAA,KAAK8F,KAAL5F,EAAA,KAAK4F,GAAW,IAAI,KACpB,MAAM9iC,EAAOg9B,EAAA,KAAK8F,IAAO,IAAI/wB,CAAE,EAC/B,GAAI,CAAC/R,EACH,OAAO,KAET,GAAIA,EAAK,OACP,OAAAA,EAAK,YAAc,EACZA,EAET,GAAIA,EAAK,KACP,OAAO,KAAK,YAAYA,EAAK,IAAI,EAEnC,GAAIA,EAAK,YAAa,CACpB,KAAM,CACJ,YAAAkjC,CACD,EAAGljC,EACJ,cAAOA,EAAK,YACL,KAAK,YAAYA,EAAK,GAAIkjC,CAAW,CAC7C,CACD,OAAO,KAAK,WAAWljC,EAAK,GAAG,CAChC,CACD,cAAc+R,EAAI/O,EAAQ,CACxBg6B,EAAA,KAAK8F,KAAL5F,EAAA,KAAK4F,GAAW,IAAI,KACpB,IAAI9iC,EAAOg9B,EAAA,KAAK8F,IAAO,IAAI/wB,CAAE,EAC7B,GAAI/R,GAAA,MAAAA,EAAM,OACR,OAAAA,EAAK,YAAc,EACZA,EAET,MAAMmjC,EAAY,IAAI,gBAAgBngC,EAAO,MAAOA,EAAO,MAAM,EAEjE,OADYmgC,EAAU,WAAW,IAAI,EACjC,UAAUngC,EAAQ,EAAG,CAAC,EAC1BhD,EAAO,CACL,OAAQmjC,EAAU,sBAAuB,EACzC,GAAI,SAASnG,EAAA,KAAK6F,GAAO,IAAIH,GAAA,KAAKD,IAAL,GAAU,GACvC,WAAY,EACZ,MAAO,EACb,EACIzF,EAAA,KAAK8F,IAAO,IAAI/wB,EAAI/R,CAAI,EACxBg9B,EAAA,KAAK8F,IAAO,IAAI9iC,EAAK,GAAIA,CAAI,EACtBA,CACR,CACD,UAAU+R,EAAI,CACZ,MAAM/R,EAAOg9B,EAAA,KAAK8F,IAAO,IAAI/wB,CAAE,EAC/B,OAAK/R,GAAA,MAAAA,EAAM,MAGJA,EAAK,OAFH,IAGV,CACD,SAAS+R,EAAI,OACXirB,EAAA,KAAK8F,KAAL5F,EAAA,KAAK4F,GAAW,IAAI,KACpB,MAAM9iC,EAAOg9B,EAAA,KAAK8F,IAAO,IAAI/wB,CAAE,EAK/B,GAJI,CAAC/R,IAGLA,EAAK,YAAc,EACfA,EAAK,aAAe,GACtB,OAEF,KAAM,CACJ,OAAAojC,CACD,EAAGpjC,EACJ,GAAI,CAACA,EAAK,KAAO,CAACA,EAAK,KAAM,CAC3B,MAAMgD,EAAS,IAAI,gBAAgBogC,EAAO,MAAOA,EAAO,MAAM,EAClDpgC,EAAO,WAAW,gBAAgB,EAC1C,wBAAwBogC,CAAM,EAClCpjC,EAAK,YAAcgD,EAAO,eAC3B,EACDm0B,EAAAiM,EAAO,QAAP,MAAAjM,EAAA,KAAAiM,GACApjC,EAAK,OAAS,IACf,CACD,UAAU+R,EAAI,CACZ,OAAOA,EAAG,WAAW,SAASirB,EAAA,KAAK6F,GAAO,GAAG,CAC9C,CACH,EArKEA,GAAA,YACAJ,GAAA,YACAK,GAAA,YAeMF,GAAA,YAAAK,GAAI,eAACv+B,EAAK2+B,EAAS,CACvBrG,EAAA,KAAK8F,KAAL5F,EAAA,KAAK4F,GAAW,IAAI,KACpB,IAAI9iC,EAAOg9B,EAAA,KAAK8F,IAAO,IAAIp+B,CAAG,EAC9B,GAAI1E,IAAS,KACX,OAAO,KAET,GAAIA,GAAA,MAAAA,EAAM,OACR,OAAAA,EAAK,YAAc,EACZA,EAET,GAAI,CACFA,MAAS,CACP,OAAQ,KACR,GAAI,SAASg9B,EAAA,KAAK6F,GAAO,IAAIH,GAAA,KAAKD,IAAL,GAAU,GACvC,WAAY,EACZ,MAAO,EACf,GACM,IAAIvgC,EASJ,GARI,OAAOmhC,GAAY,UACrBrjC,EAAK,IAAMqjC,EACXnhC,EAAQ,MAAMyxB,GAAU0P,EAAS,MAAM,GAC9BA,aAAmB,KAC5BnhC,EAAQlC,EAAK,KAAOqjC,EACXA,aAAmB,OAC5BnhC,EAAQmhC,GAENnhC,EAAM,OAAS,gBAAiB,CAClC,MAAMohC,EAA+BX,GAAa,oBAC5CY,EAAa,IAAI,WACjBC,EAAe,IAAI,MACnBC,EAAe,IAAI,QAAQ,CAACjlB,EAASC,IAAW,CACpD+kB,EAAa,OAAS,IAAM,CAC1BxjC,EAAK,OAASwjC,EACdxjC,EAAK,MAAQ,GACbwe,GACZ,EACU+kB,EAAW,OAAS,SAAY,CAC9B,MAAM1jC,EAAMG,EAAK,OAASujC,EAAW,OACrCC,EAAa,IAAO,MAAMF,EAAgC,GAAGzjC,CAAG,sCAAwCA,CACpH,EACU2jC,EAAa,QAAUD,EAAW,QAAU9kB,CACtD,CAAS,EACD8kB,EAAW,cAAcrhC,CAAK,EAC9B,MAAMuhC,CACd,MACQzjC,EAAK,OAAS,MAAM,kBAAkBkC,CAAK,EAE7ClC,EAAK,WAAa,CACnB,OAAQ6F,EAAG,CACVwvB,GAAKxvB,CAAC,EACN7F,EAAO,IACR,CACD,OAAAg9B,EAAA,KAAK8F,IAAO,IAAIp+B,EAAK1E,CAAI,EACrBA,GACFg9B,EAAA,KAAK8F,IAAO,IAAI9iC,EAAK,GAAIA,CAAI,EAExBA,CACR,EA3EH,IAAM0jC,GAANf,mBAuKA,MAAMgB,EAAe,CAKnB,YAAYC,EAAU,IAAK,CAJ3B7J,EAAA,KAAA8J,GAAY,IACZ9J,EAAA,KAAA+J,GAAU,IACV/J,EAAA,KAAAgK,GAAA,QACAhK,EAAA,KAAAiK,GAAY,IAEV9G,EAAA,KAAK6G,GAAWH,EACjB,CACD,IAAI,CACF,IAAAK,EACA,KAAAC,EACA,KAAAC,EACA,SAAAC,EACA,KAAAx3B,EAAO,IACP,oBAAAy3B,EAAsB,GACtB,SAAAC,EAAW,EACf,EAAK,CAID,GAHIF,GACFH,IAEEjH,EAAA,KAAK8G,IACP,OAEF,MAAMS,EAAO,CACX,IAAAN,EACA,KAAAC,EACA,KAAAC,EACA,KAAAv3B,CACN,EACI,GAAIowB,EAAA,KAAKgH,MAAc,GAAI,CACrBhH,EAAA,KAAK6G,IAAU,OAAS,IAC1B7G,EAAA,KAAK6G,IAAU,OAAS,GAE1B3G,EAAA,KAAK8G,GAAY,GACjBhH,EAAA,KAAK6G,IAAU,KAAKU,CAAI,EACxB,MACD,CACD,GAAIF,GAAuBrH,EAAA,KAAK6G,IAAU7G,EAAA,KAAKgH,GAAS,EAAE,OAASp3B,EAAM,CACnE03B,IACFC,EAAK,KAAOvH,EAAA,KAAK6G,IAAU7G,EAAA,KAAKgH,GAAS,EAAE,MAE7ChH,EAAA,KAAK6G,IAAU7G,EAAA,KAAKgH,GAAS,EAAIO,EACjC,MACD,CACD,MAAMC,EAAOxH,EAAA,KAAKgH,IAAY,EAC1BQ,IAASxH,EAAA,KAAK+G,IAChB/G,EAAA,KAAK6G,IAAU,OAAO,EAAG,CAAC,GAE1B3G,EAAA,KAAK8G,GAAYQ,GACbA,EAAOxH,EAAA,KAAK6G,IAAU,QACxB7G,EAAA,KAAK6G,IAAU,OAAOW,CAAI,GAG9BxH,EAAA,KAAK6G,IAAU,KAAKU,CAAI,CACzB,CACD,MAAO,CACL,GAAIvH,EAAA,KAAKgH,MAAc,GACrB,OAEF9G,EAAA,KAAK4G,GAAU,IACf,KAAM,CACJ,KAAAI,EACA,KAAAC,CACD,EAAGnH,EAAA,KAAK6G,IAAU7G,EAAA,KAAKgH,GAAS,EACjCE,IACAC,GAAA,MAAAA,IACAjH,EAAA,KAAK4G,GAAU,IACf5G,EAAA,KAAK8G,GAALhH,EAAA,KAAKgH,IAAa,EACnB,CACD,MAAO,CACL,GAAIhH,EAAA,KAAKgH,IAAYhH,EAAA,KAAK6G,IAAU,OAAS,EAAG,CAC9C3G,EAAA,KAAK8G,GAALhH,EAAA,KAAKgH,IAAa,GAClB9G,EAAA,KAAK4G,GAAU,IACf,KAAM,CACJ,IAAAG,EACA,KAAAE,CACD,EAAGnH,EAAA,KAAK6G,IAAU7G,EAAA,KAAKgH,GAAS,EACjCC,IACAE,GAAA,MAAAA,IACAjH,EAAA,KAAK4G,GAAU,GAChB,CACF,CACD,oBAAqB,CACnB,OAAO9G,EAAA,KAAKgH,MAAc,EAC3B,CACD,oBAAqB,CACnB,OAAOhH,EAAA,KAAKgH,IAAYhH,EAAA,KAAK6G,IAAU,OAAS,CACjD,CACD,UAAUj3B,EAAM,CACd,GAAIowB,EAAA,KAAKgH,MAAc,GAGvB,SAASthC,EAAIs6B,EAAA,KAAKgH,IAAWthC,GAAK,EAAGA,IACnC,GAAIs6B,EAAA,KAAK6G,IAAUnhC,CAAC,EAAE,OAASkK,EAAM,CACnCowB,EAAA,KAAK6G,IAAU,OAAOnhC,EAAI,EAAGs6B,EAAA,KAAKgH,IAAYthC,CAAC,EAC/Cw6B,EAAA,KAAK8G,GAAYthC,GACjB,MACD,CAEHs6B,EAAA,KAAK6G,IAAU,OAAS,EACxB3G,EAAA,KAAK8G,GAAY,IAClB,CACD,SAAU,CACR9G,EAAA,KAAK2G,GAAY,KAClB,CACH,CAxGEA,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,sBAsGF,MAAMS,EAAgB,CACpB,YAAY9xB,EAAW,CA0BvBonB,EAAA,KAAA2K,IAzBE,KAAK,OAAS,GACd,KAAK,UAAY,IAAI,IACrB,KAAK,QAAU,IAAI,IACnB,KAAM,CACJ,MAAAC,CACN,EAAQvS,GAAiB,SACrB,SAAW,CAACnb,EAAMnX,EAAUyS,EAAU,EAAE,IAAKI,EAC3C,UAAWjO,KAAOuS,EAAM,CACtB,MAAM2tB,EAAWlgC,EAAI,WAAW,MAAM,EAClCigC,GAASC,GACX,KAAK,UAAU,IAAIlgC,EAAI,MAAM,CAAC,EAAG,CAC/B,SAAA5E,EACA,QAAAyS,CACZ,CAAW,EACD,KAAK,QAAQ,IAAI7N,EAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,GAC7B,CAACigC,GAAS,CAACC,IACpB,KAAK,UAAU,IAAIlgC,EAAK,CACtB,SAAA5E,EACA,QAAAyS,CACZ,CAAW,EACD,KAAK,QAAQ,IAAI7N,EAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAEzC,CAEJ,CAmBD,KAAK8N,EAAMvQ,EAAO,CAChB,GAAI,CAAC,KAAK,QAAQ,IAAIA,EAAM,GAAG,EAC7B,OAEF,MAAMuf,EAAO,KAAK,UAAU,IAAI4X,EAAA,KAAKsL,GAAAG,IAAL,UAAgB5iC,EAAM,EACtD,GAAI,CAACuf,EACH,OAEF,KAAM,CACJ,SAAA1hB,EACA,QAAS,CACP,QAAAglC,EAAU,GACV,KAAA7uB,EAAO,CAAE,EACT,QAAA8uB,EAAU,IACX,CACF,EAAGvjB,EACAujB,GAAW,CAACA,EAAQvyB,EAAMvQ,CAAK,IAGnCnC,EAAS,KAAK0S,EAAM,GAAGyD,EAAMhU,CAAK,EAAC,EAC9B6iC,GACHtQ,GAAUvyB,CAAK,EAElB,CACH,CA1CEyiC,GAAA,YAAAG,GAAU,SAAC5iC,EAAO,CACZA,EAAM,QACR,KAAK,OAAO,KAAK,KAAK,EAEpBA,EAAM,SACR,KAAK,OAAO,KAAK,MAAM,EAErBA,EAAM,SACR,KAAK,OAAO,KAAK,MAAM,EAErBA,EAAM,UACR,KAAK,OAAO,KAAK,OAAO,EAE1B,KAAK,OAAO,KAAKA,EAAM,GAAG,EAC1B,MAAMy0B,EAAM,KAAK,OAAO,KAAK,GAAG,EAChC,YAAK,OAAO,OAAS,EACdA,CACR,EA0BH,MAAMsO,GAAN,MAAMA,EAAa,CAEjB,IAAI,SAAU,CACZ,MAAM/G,EAAS,IAAI,IAAI,CAAC,CAAC,aAAc,IAAI,EAAG,CAAC,SAAU,IAAI,CAAC,CAAC,EAC/D,OAAAD,GAAeC,CAAM,EACd1J,GAAO,KAAM,UAAW0J,CAAM,CACtC,CACD,QAAQH,EAAO,CACb,MAAMmH,EAAMpH,GAAOC,CAAK,EACxB,GAAI,CAAC,OAAO,WAAW,yBAAyB,EAAE,QAChD,OAAOmH,EAET,SAAW,CAAC/1B,EAAMg2B,CAAG,IAAK,KAAK,QAC7B,GAAIA,EAAI,MAAM,CAACjX,EAAGvrB,IAAMurB,IAAMgX,EAAIviC,CAAC,CAAC,EAClC,OAAOsiC,GAAa,eAAe,IAAI91B,CAAI,EAG/C,OAAO+1B,CACR,CACD,WAAW/1B,EAAM,CACf,MAAM+1B,EAAM,KAAK,QAAQ,IAAI/1B,CAAI,EACjC,OAAK+1B,EAGEjvB,GAAK,aAAa,GAAGivB,CAAG,EAFtB/1B,CAGV,CACH,EAzBE3K,GADIygC,GACG,iBAAiB,IAAI,IAAI,CAAC,CAAC,aAAc,CAAC,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,SAAU,CAAC,IAAK,IAAK,GAAG,CAAC,CAAC,CAAC,GAD1F,IAAMG,GAANH,yQA2BA,MAAMI,GAAN,MAAMA,EAA0B,CAiH9B,YAAYC,EAAWC,EAAQC,EAAgBtE,EAAkBuE,EAAUC,EAAaC,EAAYC,EAAiBC,EAA+BC,EAAuBC,EAAiCC,EAAWC,EAAeC,EAAqB,CAsM3PlM,EAAA,KAAAmM,IAKAnM,EAAA,KAAAoM,IA0DApM,EAAA,KAAAqM,IAmBArM,EAAA,KAAAsM,IAiEAtM,EAAA,KAAAuM,IAOAvM,EAAA,KAAAwM,IAKAxM,EAAA,KAAAyM,IAaAzM,EAAA,KAAA0M,IAsCA1M,EAAA,KAAA2M,IAaA3M,EAAA,KAAA4M,IAIA5M,EAAA,KAAA6M,IAgBA7M,EAAA,KAAA8M,IAIA9M,EAAA,KAAA+M,IAwJA/M,EAAA,KAAAgN,IAYAhN,EAAA,KAAAiN,IA+KAjN,EAAA,KAAMkN,IAaNlN,EAAA,KAAAmN,IA2DAnN,EAAA,KAAAoN,IAkBApN,EAAA,KAAIqN,IA2FJrN,EAAA,KAAAsN,IAyCAtN,EAAA,KAAAuN,IA9lCAvN,EAAA,KAAAwN,GAAmB,IAAI,iBACvBxN,EAAA,KAAAyN,GAAgB,MAChBzN,EAAA,KAAA0N,GAAc,IAAI,KAClB1N,EAAA,KAAA2N,GAAa,IAAI,KACjB3N,EAAA,KAAA4N,GAAkB,MAClB5N,EAAA,KAAA6N,GAAqB,MACrB7N,EAAA,KAAA8N,GAA8B,MAC9B9N,EAAA,KAAA+N,GAAkB,IAAInE,IACtB5J,EAAA,KAAAgO,GAAe,MACfhO,EAAA,KAAAiO,GAAyB,MACzBjO,EAAA,KAAAkO,GAAoB,GACpBlO,EAAA,KAAAmO,GAAgC,IAAI,KACpCnO,EAAA,KAAAoO,GAAmB,MACnBpO,EAAA,KAAAqO,GAAe,MACfrO,EAAA,KAAAsO,GAAoB,IAAI,KACxB9jC,GAAA,sBAAiB,MACjBw1B,EAAA,KAAAuO,GAAiC,IACjCvO,EAAA,KAAAwO,GAAyB,IACzBxO,EAAA,KAAAyO,GAAmC,IACnCzO,EAAA,KAAA0O,GAAiB,MACjB1O,EAAA,KAAA2O,GAA+B,MAC/B3O,EAAA,KAAA4O,GAAkB,MAClB5O,EAAA,KAAA6O,GAAmB,MACnB7O,EAAA,KAAA8O,GAAwB,IACxB9O,EAAA,KAAA+O,GAAoB,MACpB/O,EAAA,KAAAgP,GAAa,IAAIvG,IACjBzI,EAAA,KAAAiP,GAAa,IACbjP,EAAA,KAAAkP,GAAa,IACblP,EAAA,KAAAmP,GAAqB,MACrBnP,EAAA,KAAAoP,GAAqB,MACrBpP,EAAA,KAAAqP,GAA4B,MAC5BrP,EAAA,KAAAsP,GAAmB,MACnBtP,EAAA,KAAAuP,GAAa,MACbvP,EAAA,KAAAwP,GAAQ3X,GAAqB,MAC7BmI,EAAA,KAAAyP,GAAmB,IAAI,KACvBzP,EAAA,KAAA0P,GAAoB,MACpB1P,EAAA,KAAA2P,GAAoB,MACpB3P,EAAA,KAAA4P,GAAc,MACd5P,EAAA,KAAA6P,GAAiB,MACjB7P,EAAA,KAAA8P,GAAkB,CAChB,UAAW,GACX,QAAS,GACT,mBAAoB,GACpB,mBAAoB,GACpB,kBAAmB,GACnB,gBAAiB,EACrB,GACE9P,EAAA,KAAA+P,GAAe,CAAC,EAAG,CAAC,GACpB/P,EAAA,KAAAgQ,GAAwB,MACxBhQ,EAAA,KAAAiQ,GAAa,MACbjQ,EAAA,KAAAkQ,GAAU,MACVlQ,EAAA,KAAAmQ,GAAwB,MA8DtB,MAAM5J,EAAS,KAAK,QAAUtD,EAAA,KAAKuK,IAAiB,OACpDrK,EAAA,KAAK8M,GAAa3E,GAClBnI,EAAA,KAAK+M,GAAU3E,GACfpI,EAAA,KAAKyK,GAAkBpC,GACvBrI,EAAA,KAAKwM,GAAoBzI,GACzB,KAAK,UAAYuE,EACjBA,EAAS,IAAI,gBAAiB,KAAK,gBAAgB,KAAK,IAAI,EAAG,CAC7D,OAAAlF,CACN,CAAK,EACDkF,EAAS,IAAI,eAAgB,KAAK,eAAe,KAAK,IAAI,EAAG,CAC3D,OAAAlF,CACN,CAAK,EACDkF,EAAS,IAAI,gBAAiB,KAAK,gBAAgB,KAAK,IAAI,EAAG,CAC7D,OAAAlF,CACN,CAAK,EACDkF,EAAS,IAAI,mBAAoB,KAAK,mBAAmB,KAAK,IAAI,EAAG,CACnE,OAAAlF,CACN,CAAK,EACDkF,EAAS,IAAI,gBAAiB,KAAK,gBAAgB,KAAK,IAAI,EAAG,CAC7D,OAAAlF,CACN,CAAK,EACDkF,EAAS,IAAI,+BAAgC2E,GAAO,KAAK,aAAaA,EAAI,KAAMA,EAAI,KAAK,EAAG,CAC1F,OAAA7J,CACN,CAAK,EACDlH,EAAA,KAAKmN,GAAA6D,IAAL,WACAhR,EAAA,KAAK0N,GAAAuD,IAAL,WACAjR,EAAA,KAAKsN,GAAA4D,IAAL,WACApN,EAAA,KAAK0K,GAAqBnC,EAAY,mBACtCvI,EAAA,KAAKuL,GAAiBhD,EAAY,eAClCvI,EAAA,KAAKyM,GAAcjE,GACnBxI,EAAA,KAAK0L,GAAmBjD,GAAmB,MAC3CzI,EAAA,KAAKoL,GAAiC1C,GACtC1I,EAAA,KAAKqL,GAAyB1C,GAC9B3I,EAAA,KAAKsL,GAAmC1C,GACxC5I,EAAA,KAAKoM,GAAavD,GAAa,MAC/B,KAAK,eAAiB,CACpB,UAAW/S,GAAc,iBACzB,SAAU,CAChB,EACI,KAAK,eAAiB,GACtB,KAAK,eAAiBgT,GAAiB,KACvC,KAAK,qBAAuBC,IAAwB,EACrD,CArGD,WAAW,kBAAmB,CAC5B,MAAMsE,EAAQnF,GAA0B,UAClCoF,EAAeh4B,GAAQwqB,EAAAxqB,EAAKw3B,IAAW,SAAS,SAAS,aAAa,GAAK,SAAS,cAAc,UAAY,UAAYx3B,EAAK,sBAAqB,EACpJi4B,EAAmB,CAACC,EAAO,CAC/B,OAAQC,CACd,IAAU,CACJ,GAAIA,aAAc,iBAAkB,CAClC,KAAM,CACJ,KAAA/9B,CACD,EAAG+9B,EACJ,OAAO/9B,IAAS,QAAUA,IAAS,QACpC,CACD,MAAO,EACb,EACUg+B,EAAQ,KAAK,gBACbC,EAAM,KAAK,cACjB,OAAOtW,GAAO,KAAM,mBAAoB,IAAIkQ,GAAgB,CAAC,CAAC,CAAC,SAAU,YAAY,EAAG8F,EAAM,UAAW,CACvG,QAASE,CACf,CAAK,EAAG,CAAC,CAAC,SAAU,YAAY,EAAGF,EAAM,KAAM,CACzC,QAASE,CACf,CAAK,EAAG,CAAC,CAAC,SAAU,eAAgB,mBAAoB,eAAgB,kBAAkB,EAAGF,EAAM,KAAM,CACnG,QAASE,CACf,CAAK,EAAG,CAAC,CAAC,YAAa,gBAAiB,iBAAkB,kBAAmB,gBAAiB,oBAAqB,qBAAsB,SAAU,cAAe,eAAgB,YAAY,EAAGF,EAAM,OAAQ,CACzM,QAASE,CACf,CAAK,EAAG,CAAC,CAAC,QAAS,WAAW,EAAGF,EAAM,yBAA0B,CAC3D,QAAS,CAAC/3B,EAAM,CACd,OAAQm4B,CAChB,IAAY,EAAEA,aAAc,oBAAsB3N,EAAAxqB,EAAKw3B,IAAW,SAASW,CAAE,GAAK,CAACn4B,EAAK,cACxF,CAAK,EAAG,CAAC,CAAC,IAAK,OAAO,EAAG+3B,EAAM,yBAA0B,CACnD,QAAS,CAAC/3B,EAAM,CACd,OAAQm4B,CAChB,IAAY,EAAEA,aAAc,oBAAsB3N,EAAAxqB,EAAKw3B,IAAW,SAAS,SAAS,aAAa,CAC5F,GAAG,CAAC,CAAC,SAAU,YAAY,EAAGO,EAAM,WAAW,EAAG,CAAC,CAAC,YAAa,eAAe,EAAGA,EAAM,yBAA0B,CAClH,KAAM,CAAC,CAACK,EAAO,CAAC,EAChB,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,iBAAkB,qBAAqB,EAAGD,EAAM,yBAA0B,CAC9E,KAAM,CAAC,CAACM,EAAK,CAAC,EACd,QAASL,CACf,CAAK,EAAG,CAAC,CAAC,aAAc,gBAAgB,EAAGD,EAAM,yBAA0B,CACrE,KAAM,CAACK,EAAO,CAAC,EACf,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,kBAAmB,sBAAsB,EAAGD,EAAM,yBAA0B,CAChF,KAAM,CAACM,EAAK,CAAC,EACb,QAASL,CACf,CAAK,EAAG,CAAC,CAAC,UAAW,aAAa,EAAGD,EAAM,yBAA0B,CAC/D,KAAM,CAAC,EAAG,CAACK,CAAK,EAChB,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,eAAgB,mBAAmB,EAAGD,EAAM,yBAA0B,CAC1E,KAAM,CAAC,EAAG,CAACM,CAAG,EACd,QAASL,CACf,CAAK,EAAG,CAAC,CAAC,YAAa,eAAe,EAAGD,EAAM,yBAA0B,CACnE,KAAM,CAAC,EAAGK,CAAK,EACf,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,iBAAkB,qBAAqB,EAAGD,EAAM,yBAA0B,CAC9E,KAAM,CAAC,EAAGM,CAAG,EACb,QAASL,CACf,CAAK,CAAC,CAAC,CAAC,CACL,CA6CD,SAAU,sBACRrT,EAAA6F,EAAA,KAAKkN,MAAL,MAAA/S,EAA4B,UAC5B+F,EAAA,KAAKgN,GAAwB,OAC7BhT,EAAA8F,EAAA,KAAKuK,MAAL,MAAArQ,EAAuB,QACvBgG,EAAA,KAAKqK,GAAmB,MACxB,KAAK,QAAU,KACf,UAAWuD,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EACxCoD,EAAM,QAAO,EAEf9N,EAAA,KAAK0K,IAAW,QAChB1K,EAAA,KAAKyK,IAAY,QACjBzK,EAAA,KAAKqL,IAAkB,SACvB0C,EAAA/N,EAAA,KAAKqM,MAAL,MAAA0B,EAAuB,QACvB7N,EAAA,KAAKsK,GAAgB,MACrBxK,EAAA,KAAKwM,IAAiB,QACtBxM,EAAA,KAAK8K,IAAgB,WACrBkD,EAAAhO,EAAA,KAAK2K,MAAL,MAAAqD,EAAsB,WACtBC,EAAAjO,EAAA,KAAK0M,MAAL,MAAAuB,EAAwB,WACxBC,EAAAlO,EAAA,KAAK8L,MAAL,MAAAoC,EAAwB,OACxBhO,EAAA,KAAK4L,GAAoB,OACzBqC,EAAAnO,EAAA,KAAKoM,MAAL,MAAA+B,EAAgC,UAChCjO,EAAA,KAAKkM,GAA4B,MAC7BpM,EAAA,KAAK0L,MACP,aAAa1L,EAAA,KAAK0L,GAA4B,EAC9CxL,EAAA,KAAKwL,GAA+B,OAElC1L,EAAA,KAAK+M,MACP,aAAa/M,EAAA,KAAK+M,GAAqB,EACvC7M,EAAA,KAAK6M,GAAwB,QAE/BqB,EAAA,KAAK,iBAAL,MAAAA,EAAqB,SACtB,CACD,eAAeC,EAAI,CACjB,OAAO,YAAY,IAAI,CAAC,KAAK,QAASA,EAAG,MAAM,CAAC,CACjD,CACD,IAAI,WAAY,CACd,OAAOrO,EAAA,KAAKsM,GACb,CACD,IAAI,mBAAoB,CACtB,OAAOtM,EAAA,KAAKuL,GACb,CACD,IAAI,8BAA+B,CACjC,OAAOvL,EAAA,KAAKwL,GACb,CACD,IAAI,WAAY,CACd,OAAOjU,GAAO,KAAM,YAAayI,EAAA,KAAK2M,IAAc3M,EAAA,KAAKyL,IAAe,aAAazL,EAAA,KAAK2M,IAAY,WAAY3M,EAAA,KAAK2M,IAAY,UAAU,EAAI,MAAM,CACxJ,CACD,IAAI,WAAY,CACd,OAAOpV,GAAO,KAAM,YAAa,iBAAiByI,EAAA,KAAKgN,GAAU,EAAE,SAAS,CAC7E,CACD,IAAI,iBAAkB,CACpB,OAAOzV,GAAO,KAAM,kBAAmByI,EAAA,KAAK4L,IAAmB,IAAI,IAAI5L,EAAA,KAAK4L,IAAiB,MAAM,GAAG,EAAE,IAAI0C,GAAQA,EAAK,MAAM,GAAG,EAAE,IAAIrd,GAAKA,EAAE,KAAM,EAAC,CAAC,EAAI,IAAI,CAChK,CACD,IAAI,qBAAsB,CACxB,OAAOsG,GAAO,KAAM,sBAAuB,KAAK,gBAAkB,IAAI,IAAI,MAAM,KAAK,KAAK,gBAAiB1uB,GAAKA,EAAE,SAAS,CAAC,EAAI,IAAI,CACrI,CACD,yBAAyBilC,EAAO,CAC1BA,GACF,KAAK,YAAW,EAChB,KAAK,kBAAkB,EAAI,GAE3B,KAAK,kBAAkB,EAAK,EAE9B5N,EAAA,KAAK8K,GAAyB8C,EAC/B,CACD,4BAA4B9J,EAAa,CACvC9D,EAAA,KAAKkM,GAA4BpI,EAClC,CACD,YAAYxB,EAAQ+L,EAAY,GAAO,QACrCpU,EAAA6F,EAAA,KAAK2K,MAAL,MAAAxQ,EAAsB,YAAY,KAAMqI,EAAQ+L,EACjD,CACD,aAAa/L,EAAQ,QACnBrI,EAAA6F,EAAA,KAAK0M,MAAL,MAAAvS,EAAwB,aAAa,CACnC,UAAW,KACX,OAAAqI,CACN,EACG,CACD,IAAI,kBAAmB,CACrB,OAAOxC,EAAA,KAAK0M,GACb,CACD,aAAat6B,EAAMtP,EAAU,CAC3B,KAAK,UAAU,GAAG,8BAA+BA,EAAU,CACzD,KAAM,GACN,OAAQ,KAAK,OACnB,CAAK,EACD,KAAK,UAAU,SAAS,yBAA0B,CAChD,OAAQ,KACR,KAAAsP,CACN,CAAK,CACF,CACD,cAAcF,EAAM/D,EAAO,CACzB,KAAK,UAAU,SAAS,gBAAiB,CACvC,OAAQ,KACR,KAAA+D,EACA,MAAA/D,CACN,CAAK,CACF,CACD,gBAAgB,CACd,KAAA+D,EACA,MAAA/D,CACJ,EAAK,CACD,OAAQ+D,EAAI,CACV,IAAK,kCACHguB,EAAA,KAAKsL,GAAmCr9B,GACxC,KACH,CACF,CACD,eAAe,CACb,WAAAqgC,CACJ,EAAK,CACDtO,EAAA,KAAK+K,GAAoBuD,EAAa,EACvC,CACD,oBAAqB,CACnBxO,EAAA,KAAKgN,IAAW,OACjB,CACD,WAAW/b,EAAGO,EAAG,CACf,UAAWsc,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EAAI,CAC5C,KAAM,CACJ,EAAG+D,EACH,EAAGC,EACH,MAAA9mC,EACA,OAAAR,CACR,EAAU0mC,EAAM,IAAI,wBACd,GAAI7c,GAAKwd,GAAUxd,GAAKwd,EAAS7mC,GAAS4pB,GAAKkd,GAAUld,GAAKkd,EAAStnC,EACrE,OAAO0mC,CAEV,CACD,OAAO,IACR,CACD,kBAAkB3/B,EAAQ,GAAO,CAC/B6xB,EAAA,KAAKiN,IAAQ,UAAU,OAAO,eAAgB9+B,CAAK,CACpD,CACD,iBAAiBq0B,EAAQ,CACvBxC,EAAA,KAAKqL,IAAkB,IAAI7I,CAAM,CAClC,CACD,oBAAoBA,EAAQ,CAC1BxC,EAAA,KAAKqL,IAAkB,OAAO7I,CAAM,CACrC,CACD,gBAAgB,CACd,MAAArE,CACJ,EAAK,OACD,KAAK,eAAc,EACnB,KAAK,eAAe,UAAYA,EAAQnI,GAAc,iBACtD,UAAWwM,KAAUxC,EAAA,KAAKqL,IACxB7I,EAAO,gBAAe,GAExBrI,EAAA6F,EAAA,KAAKgL,MAAL,MAAA7Q,EAA6B,iBAC9B,CACD,mBAAmB,CACjB,cAAAwU,CACJ,EAAK,CACD,KAAK,eAAc,EACnB,KAAK,eAAe,SAAWA,CAChC,CAoBD,mBAAmBC,EAAmB,GAAI,CACxC,MAAMC,EAAY,SAAS,eAC3B,GAAI,CAACA,GAAaA,EAAU,YAC1B,OAEF,KAAM,CACJ,WAAAC,EACA,aAAAC,EACA,UAAAC,EACA,YAAAC,CACD,EAAGJ,EACE99B,EAAO89B,EAAU,WAEjBK,EADgB9S,EAAA,KAAK8M,GAAAiG,IAAL,UAAmCN,GACzB,QAAQ,YAAY,EAC9C9J,EAAQ,KAAK,kBAAkBmK,CAAS,EAC9C,GAAI,CAACnK,EACH,OAEF8J,EAAU,MAAK,EACf,MAAMf,EAAQ1R,EAAA,KAAK+M,GAAAiG,IAAL,UAA2BF,GACnCG,EAAarP,EAAA,KAAKuM,MAAU3X,GAAqB,KACjD9xB,EAAW,IAAM,CACrBgrC,GAAA,MAAAA,EAAO,sBAAsB,CAC3B,EAAG,EACH,EAAG,CACJ,EAAE,GAAO,CACR,iBAAAc,EACA,MAAA7J,EACA,WAAA+J,EACA,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,KAAAl+B,CACR,GACUs+B,GACF,KAAK,eAAe,YAAa,GAAM,EAAI,CAEnD,EACI,GAAIA,EAAY,CACd,KAAK,aAAaza,GAAqB,UAAW9xB,CAAQ,EAC1D,MACD,CACDA,GACD,CAeD,uBAAuB0/B,EAAQ,CACzB,CAACA,EAAO,QAAS,GAAIxC,EAAA,KAAK4K,KAAsB,CAAC5K,EAAA,KAAK4K,IAAmB,IAAIpI,EAAO,EAAE,GACxFxC,EAAA,KAAK4K,IAAmB,SAASpI,EAAO,GAAIA,CAAM,CAErD,CA+FD,MAAO,CAML,GALA,KAAK,eAAiB,GAClBxC,EAAA,KAAK6L,MACP3L,EAAA,KAAK2L,GAAwB,IAC7BzP,EAAA,KAAKkN,GAAAgG,IAAL,UAAkB,iBAEhB,CAAC,KAAK,aACR,OAEF,KAAM,CACJ,cAAAC,CACD,EAAG,SACJ,UAAW/M,KAAUxC,EAAA,KAAKwM,IACxB,GAAIhK,EAAO,IAAI,SAAS+M,CAAa,EAAG,CACtCrP,EAAA,KAAKiM,GAAqB,CAAC3J,EAAQ+M,CAAa,GAChD/M,EAAO,oBAAsB,GAC7B,KACD,CAEJ,CACD,OAAQ,CACN,GAAI,CAACxC,EAAA,KAAKmM,IACR,OAEF,KAAM,CAACqD,EAAYC,CAAiB,EAAIzP,EAAA,KAAKmM,IAC7CjM,EAAA,KAAKiM,GAAqB,MAC1BsD,EAAkB,iBAAiB,UAAW,IAAM,CAClDD,EAAW,oBAAsB,EACvC,EAAO,CACD,KAAM,GACN,OAAQ,KAAK,OACnB,CAAK,EACDC,EAAkB,MAAK,CACxB,CA+CD,kBAAmB,CACjBrT,EAAA,KAAKsN,GAAA4D,IAAL,WACAlR,EAAA,KAAKwN,GAAA8F,IAAL,UACD,CACD,qBAAsB,CACpBtT,EAAA,KAAKuN,GAAAgG,IAAL,WACAvT,EAAA,KAAKyN,GAAA+F,IAAL,UACD,CACD,SAAS3qC,EAAO,CACd,SAAW,CACT,KAAA2K,CACN,IAAS3K,EAAM,aAAa,MACtB,UAAWo/B,KAAcrE,EAAA,KAAKoL,IAC5B,GAAI/G,EAAW,yBAAyBz0B,CAAI,EAAG,CAC7C3K,EAAM,aAAa,WAAa,OAChCA,EAAM,eAAc,EACpB,MACD,CAGN,CACD,KAAKA,EAAO,CACV,UAAW4U,KAAQ5U,EAAM,aAAa,MACpC,UAAWo/B,KAAcrE,EAAA,KAAKoL,IAC5B,GAAI/G,EAAW,yBAAyBxqB,EAAK,IAAI,EAAG,CAClDwqB,EAAW,MAAMxqB,EAAM,KAAK,YAAY,EACxC5U,EAAM,eAAc,EACpB,MACD,CAGN,CACD,KAAKA,EAAO,OAGV,GAFAA,EAAM,eAAc,GACpBk1B,EAAA6F,EAAA,KAAKwK,MAAL,MAAArQ,EAAoB,iBAChB,CAAC,KAAK,aACR,OAEF,MAAM0V,EAAU,GAChB,UAAWrN,KAAUxC,EAAA,KAAKwM,IAAkB,CAC1C,MAAMsD,EAAatN,EAAO,UAAU,EAAI,EACpCsN,GACFD,EAAQ,KAAKC,CAAU,CAE1B,CACGD,EAAQ,SAAW,GAGvB5qC,EAAM,cAAc,QAAQ,oBAAqB,KAAK,UAAU4qC,CAAO,CAAC,CACzE,CACD,IAAI5qC,EAAO,CACT,KAAK,KAAKA,CAAK,EACf,KAAK,OAAM,CACZ,CACD,MAAM,MAAMA,EAAO,CACjBA,EAAM,eAAc,EACpB,KAAM,CACJ,cAAA8qC,CACD,EAAG9qC,EACJ,UAAW4U,KAAQk2B,EAAc,MAC/B,UAAW1L,KAAcrE,EAAA,KAAKoL,IAC5B,GAAI/G,EAAW,yBAAyBxqB,EAAK,IAAI,EAAG,CAClDwqB,EAAW,MAAMxqB,EAAM,KAAK,YAAY,EACxC,MACD,CAGL,IAAI7W,EAAO+sC,EAAc,QAAQ,mBAAmB,EACpD,GAAI,CAAC/sC,EACH,OAEF,GAAI,CACFA,EAAO,KAAK,MAAMA,CAAI,CACvB,OAAQgtC,EAAI,CACX3X,GAAK,WAAW2X,EAAG,OAAO,IAAI,EAC9B,MACD,CACD,GAAI,CAAC,MAAM,QAAQhtC,CAAI,EACrB,OAEF,KAAK,YAAW,EAChB,MAAM8qC,EAAQ,KAAK,aACnB,GAAI,CACF,MAAMmC,EAAa,GACnB,UAAWzN,KAAUx/B,EAAM,CACzB,MAAMktC,EAAqB,MAAMpC,EAAM,YAAYtL,CAAM,EACzD,GAAI,CAAC0N,EACH,OAEFD,EAAW,KAAKC,CAAkB,CACnC,CACD,MAAMjJ,EAAM,IAAM,CAChB,UAAWzE,KAAUyN,EACnB7T,EAAA,KAAK+N,GAAAgG,IAAL,UAAuB3N,GAEzBpG,EAAA,KAAKkO,GAAA8F,IAAL,UAAoBH,EAC5B,EACY/I,EAAO,IAAM,CACjB,UAAW1E,KAAUyN,EACnBzN,EAAO,OAAM,CAEvB,EACM,KAAK,YAAY,CACf,IAAAyE,EACA,KAAAC,EACA,SAAU,EAClB,CAAO,CACF,OAAQ8I,EAAI,CACX3X,GAAK,WAAW2X,EAAG,OAAO,IAAI,CAC/B,CACF,CACD,QAAQ/qC,EAAO,CACT,CAAC,KAAK,gBAAkBA,EAAM,MAAQ,UACxC,KAAK,eAAiB,IAEpB+6B,EAAA,KAAKuM,MAAU3X,GAAqB,MAAQ,CAAC,KAAK,0BACpDwT,GAA0B,iBAAiB,KAAK,KAAMnjC,CAAK,CAE9D,CACD,MAAMA,EAAO,CACP,KAAK,gBAAkBA,EAAM,MAAQ,UACvC,KAAK,eAAiB,GAClB+6B,EAAA,KAAK6L,MACP3L,EAAA,KAAK2L,GAAwB,IAC7BzP,EAAA,KAAKkN,GAAAgG,IAAL,UAAkB,iBAGvB,CACD,gBAAgB,CACd,KAAAp9B,CACJ,EAAK,CACD,OAAQA,EAAI,CACV,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,YACH,KAAKA,CAAI,IACT,MACF,IAAK,qBACH,KAAK,mBAAmB,cAAc,EACtC,KACH,CACF,CAmBD,gBAAgBm+B,EAAW,CACrBA,GACFjU,EAAA,KAAKoN,GAAA8G,IAAL,WACAlU,EAAA,KAAKwN,GAAA8F,IAAL,WACAtT,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,UAAWvQ,EAAA,KAAKuM,MAAU3X,GAAqB,KAC/C,QAASwH,EAAA,KAAKiO,GAAAmG,IAAL,WACT,mBAAoBxQ,EAAA,KAAK8K,IAAgB,mBAAoB,EAC7D,mBAAoB9K,EAAA,KAAK8K,IAAgB,mBAAoB,EAC7D,kBAAmB,EAC3B,KAEM1O,EAAA,KAAKqN,GAAAgH,IAAL,WACArU,EAAA,KAAKyN,GAAA+F,IAAL,WACAxT,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,UAAW,EACnB,GACM,KAAK,kBAAkB,EAAK,EAE/B,CACD,oBAAoBG,EAAO,CACzB,GAAI,CAAA1Q,EAAA,KAAKoL,IAGT,CAAAlL,EAAA,KAAKkL,GAAesF,GACpB,UAAWrM,KAAcrE,EAAA,KAAKoL,IAC5BhP,EAAA,KAAK4N,GAAA2G,IAAL,UAAuBtM,EAAW,2BAErC,CACD,OAAQ,CACN,OAAOrE,EAAA,KAAK+L,IAAW,EACxB,CACD,IAAI,cAAe,CACjB,OAAO/L,EAAA,KAAK0K,IAAW,IAAI1K,EAAA,KAAKiL,GAAiB,CAClD,CACD,SAAS2F,EAAW,CAClB,OAAO5Q,EAAA,KAAK0K,IAAW,IAAIkG,CAAS,CACrC,CACD,IAAI,kBAAmB,CACrB,OAAO5Q,EAAA,KAAKiL,GACb,CACD,SAAS6C,EAAO,CACd9N,EAAA,KAAK0K,IAAW,IAAIoD,EAAM,UAAWA,CAAK,EACtC9N,EAAA,KAAKgM,IACP8B,EAAM,OAAM,EAEZA,EAAM,QAAO,CAEhB,CACD,YAAYA,EAAO,CACjB9N,EAAA,KAAK0K,IAAW,OAAOoD,EAAM,SAAS,CACvC,CACD,MAAM,WAAW17B,EAAMy+B,EAAS,KAAMC,EAAiB,GAAO,SAC5D,GAAI9Q,EAAA,KAAKuM,MAAUn6B,GAGf,EAAA4tB,EAAA,KAAKkN,MACP,MAAMlN,EAAA,KAAKkN,IAAsB,QAC7B,CAAClN,EAAA,KAAKkN,MAMZ,IAFAhN,EAAA,KAAKgN,GAAwB,QAAQ,iBACrChN,EAAA,KAAKqM,GAAQn6B,GACTA,IAASwiB,GAAqB,KAAM,CACtC,KAAK,gBAAgB,EAAK,EAC1BwH,EAAA,KAAK8N,GAAA6G,IAAL,YACA5W,EAAA,KAAK,iBAAL,MAAAA,EAAqB,OACrB6F,EAAA,KAAKkN,IAAsB,UAC3B,MACD,CACG96B,IAASwiB,GAAqB,WAChC,OAAMsF,EAAA8F,EAAA,KAAK0M,MAAL,YAAAxS,EAAwB,kBAEhC,KAAK,gBAAgB,EAAI,EACzB,MAAMkC,EAAA,KAAK6N,GAAA+G,IAAL,WACN,KAAK,YAAW,EAChB,UAAWlD,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EACxCoD,EAAM,WAAW17B,CAAI,EAEvB,GAAI,CAACy+B,EAAQ,CACPC,GACF,KAAK,yBAAwB,EAE/B9Q,EAAA,KAAKkN,IAAsB,UAC3B,MACD,CACD,UAAW1K,KAAUxC,EAAA,KAAKyK,IAAY,OAAM,EACtCjI,EAAO,sBAAwBqO,GACjC,KAAK,YAAYrO,CAAM,EACvBA,EAAO,gBAAe,GAEtBA,EAAO,SAAQ,EAGnBxC,EAAA,KAAKkN,IAAsB,UAC5B,CACD,0BAA2B,CACrB,KAAK,aAAa,2BACpB,KAAK,aAAa,cAErB,CACD,cAAc96B,EAAM,CACdA,IAAS4tB,EAAA,KAAKuM,KAGlB,KAAK,UAAU,SAAS,6BAA8B,CACpD,OAAQ,KACR,KAAAn6B,CACN,CAAK,CACF,CACD,aAAaxC,EAAMzB,EAAO,OACxB,GAAK6xB,EAAA,KAAKoL,IAGV,QAAQx7B,EAAI,CACV,KAAK+kB,GAA2B,OAC9B,KAAK,aAAa,aAAaxmB,CAAK,EACpC,OACF,KAAKwmB,GAA2B,yBAC9BwF,EAAA6F,EAAA,KAAKoM,MAAL,MAAAjS,EAAgC,YAAYhsB,GAC5C,MACF,KAAKwmB,GAA2B,mBAC9B,KAAK,UAAU,SAAS,kBAAmB,CACzC,OAAQ,KACR,QAAS,CACP,KAAM,UACN,KAAM,CACJ,KAAM,YACN,OAAQ,mBACT,CACF,CACX,CAAS,GACAqL,EAAA,KAAK4M,KAAL1M,EAAA,KAAK0M,GAAmB,IAAI,MAAO,IAAIh9B,EAAMzB,CAAK,EACnD,KAAK,eAAe,YAAaA,CAAK,EACtC,KACH,CACD,UAAWq0B,KAAUxC,EAAA,KAAKwM,IACxBhK,EAAO,aAAa5yB,EAAMzB,CAAK,EAEjC,UAAWk2B,KAAcrE,EAAA,KAAKoL,IAC5B/G,EAAW,oBAAoBz0B,EAAMzB,CAAK,EAE7C,CACD,eAAeyB,EAAMvI,EAAS4pC,EAAe,GAAO,OAClD,UAAWzO,KAAUxC,EAAA,KAAKyK,IAAY,OAAM,EACtCjI,EAAO,aAAe5yB,GACxB4yB,EAAO,KAAKn7B,CAAO,KAGT8yB,EAAA6F,EAAA,KAAK4M,MAAL,YAAAzS,EAAqB,IAAIxF,GAA2B,sBAAuB,MAC3EttB,GACZ+0B,EAAA,KAAK4N,GAAA2G,IAAL,UAAuB,CAAC,CAAChc,GAA2B,mBAAoBttB,CAAO,CAAC,EAEnF,CACD,cAAc6pC,EAAW,GAAO,CAC9B,GAAIlR,EAAA,KAAKiM,MAAeiF,EAGxB,CAAAhR,EAAA,KAAK+L,GAAaiF,GAClB,UAAWpD,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EACpCwG,EACFpD,EAAM,aAAY,EAElBA,EAAM,YAAW,EAEnBA,EAAM,IAAI,UAAU,OAAO,UAAWoD,CAAQ,EAEjD,CA0BD,WAAWN,EAAW,CACpB,MAAMf,EAAU,GAChB,UAAWrN,KAAUxC,EAAA,KAAKyK,IAAY,OAAM,EACtCjI,EAAO,YAAcoO,GACvBf,EAAQ,KAAKrN,CAAM,EAGvB,OAAOqN,CACR,CACD,UAAU96B,EAAI,CACZ,OAAOirB,EAAA,KAAKyK,IAAY,IAAI11B,CAAE,CAC/B,CACD,UAAUytB,EAAQ,CAChBxC,EAAA,KAAKyK,IAAY,IAAIjI,EAAO,GAAIA,CAAM,CACvC,CACD,aAAaA,EAAQ,SACfA,EAAO,IAAI,SAAS,SAAS,aAAa,IACxCxC,EAAA,KAAK0L,KACP,aAAa1L,EAAA,KAAK0L,GAA4B,EAEhDxL,EAAA,KAAKwL,GAA+B,WAAW,IAAM,CACnD,KAAK,mBAAkB,EACvBxL,EAAA,KAAKwL,GAA+B,KACrC,EAAE,CAAC,IAEN1L,EAAA,KAAKyK,IAAY,OAAOjI,EAAO,EAAE,EAC7BA,EAAO,uBACTrI,EAAA6F,EAAA,KAAKqM,MAAL,MAAAlS,EAAuB,OAAOqI,EAAO,sBAEvC,KAAK,SAASA,CAAM,GAChB,CAACA,EAAO,qBAAuB,CAACxC,EAAA,KAAKkL,IAA8B,IAAI1I,EAAO,mBAAmB,MACnGtI,EAAA8F,EAAA,KAAK4K,MAAL,MAAA1Q,EAAyB,OAAOsI,EAAO,IAE1C,CACD,4BAA4BA,EAAQ,CAClCxC,EAAA,KAAKkL,IAA8B,IAAI1I,EAAO,mBAAmB,EACjE,KAAK,6BAA6BA,CAAM,EACxCA,EAAO,QAAU,EAClB,CACD,2BAA2B2O,EAAqB,CAC9C,OAAOnR,EAAA,KAAKkL,IAA8B,IAAIiG,CAAmB,CAClE,CACD,+BAA+B3O,EAAQ,CACrCxC,EAAA,KAAKkL,IAA8B,OAAO1I,EAAO,mBAAmB,EACpE,KAAK,gCAAgCA,CAAM,EAC3CA,EAAO,QAAU,EAClB,CAUD,gBAAgBA,EAAQ,CAClBxC,EAAA,KAAKwK,MAAkBhI,IAG3BtC,EAAA,KAAKsK,GAAgBhI,GACjBA,GACFpG,EAAA,KAAK4N,GAAA2G,IAAL,UAAuBnO,EAAO,oBAEjC,CAMD,SAASA,EAAQ,CACXxC,EAAA,KAAKoK,GAAAgH,MAAwB5O,GAC/BpG,EAAA,KAAK4N,GAAA2G,IAAL,UAAuBnO,EAAO,mBAEjC,CACD,6BAA6B6B,EAAY,CACvCjI,EAAA,KAAK4N,GAAA2G,IAAL,UAAuBtM,EAAW,0BACnC,CACD,eAAe7B,EAAQ,CACrB,GAAIxC,EAAA,KAAKwM,IAAiB,IAAIhK,CAAM,EAAG,CACrCxC,EAAA,KAAKwM,IAAiB,OAAOhK,CAAM,EACnCA,EAAO,SAAQ,EACfpG,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,kBAAmB,KAAK,YAChC,GACM,MACD,CACDvQ,EAAA,KAAKwM,IAAiB,IAAIhK,CAAM,EAChCA,EAAO,OAAM,EACbpG,EAAA,KAAK4N,GAAA2G,IAAL,UAAuBnO,EAAO,oBAC9BpG,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,kBAAmB,EACzB,EACG,CACD,YAAY/N,EAAQ,QAClBrI,EAAA6F,EAAA,KAAKgL,MAAL,MAAA7Q,EAA6B,iBAC7B,UAAWkX,KAAMrR,EAAA,KAAKwM,IAChB6E,IAAO7O,GACT6O,EAAG,SAAQ,EAGfrR,EAAA,KAAKwM,IAAiB,QACtBxM,EAAA,KAAKwM,IAAiB,IAAIhK,CAAM,EAChCA,EAAO,OAAM,EACbpG,EAAA,KAAK4N,GAAA2G,IAAL,UAAuBnO,EAAO,oBAC9BpG,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,kBAAmB,EACzB,EACG,CACD,WAAW/N,EAAQ,CACjB,OAAOxC,EAAA,KAAKwM,IAAiB,IAAIhK,CAAM,CACxC,CACD,IAAI,qBAAsB,CACxB,OAAOxC,EAAA,KAAKwM,IAAiB,OAAQ,EAAC,KAAI,EAAG,KAC9C,CACD,SAAShK,EAAQ,CACfA,EAAO,SAAQ,EACfxC,EAAA,KAAKwM,IAAiB,OAAOhK,CAAM,EACnCpG,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,kBAAmB,KAAK,YAC9B,EACG,CACD,IAAI,cAAe,CACjB,OAAOvQ,EAAA,KAAKwM,IAAiB,OAAS,CACvC,CACD,IAAI,gBAAiB,CACnB,OAAOxM,EAAA,KAAKwM,IAAiB,OAAS,GAAK,KAAK,oBAAoB,cACrE,CACD,MAAO,OACLxM,EAAA,KAAK8K,IAAgB,OACrB1O,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,mBAAoBvQ,EAAA,KAAK8K,IAAgB,mBAAoB,EAC7D,mBAAoB,GACpB,QAAS1O,EAAA,KAAKiO,GAAAmG,IAAL,UACf,IACIrW,EAAA,KAAK,iBAAL,MAAAA,EAAqB,MACtB,CACD,MAAO,CACL6F,EAAA,KAAK8K,IAAgB,OACrB1O,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,mBAAoB,GACpB,mBAAoBvQ,EAAA,KAAK8K,IAAgB,mBAAoB,EAC7D,QAAS1O,EAAA,KAAKiO,GAAAmG,IAAL,UACf,EACG,CACD,YAAYnlC,EAAQ,CAClB20B,EAAA,KAAK8K,IAAgB,IAAIz/B,CAAM,EAC/B+wB,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,mBAAoB,GACpB,mBAAoB,GACpB,QAASnU,EAAA,KAAKiO,GAAAmG,IAAL,UACf,EACG,CACD,eAAe5gC,EAAM,CACnBowB,EAAA,KAAK8K,IAAgB,UAAUl7B,CAAI,CACpC,CAYD,QAAS,OACP,KAAK,eAAc,EACnB,MAAM0hC,GAAgBnX,EAAA,KAAK,eAAL,YAAAA,EAAmB,kBAAkB,IAC3D,GAAI,CAAC,KAAK,cAAgB,CAACmX,EACzB,OAEF,MAAMzB,EAAUyB,EAAgB,CAACA,CAAa,EAAI,CAAC,GAAGtR,EAAA,KAAKwM,GAAgB,EACrEvF,EAAM,IAAM,QAChB9M,EAAA,KAAK,iBAAL,MAAAA,EAAqB,KAAK+M,EAAM2I,EAAQ,SAAW,EAAIA,EAAQ,CAAC,EAAE,WAAaA,EAAQ,QACvF,UAAWrN,KAAUqN,EACnBrN,EAAO,OAAM,CAErB,EACU0E,EAAO,IAAM,CACjB,UAAW1E,KAAUqN,EACnBzT,EAAA,KAAK+N,GAAAgG,IAAL,UAAuB3N,EAE/B,EACI,KAAK,YAAY,CACf,IAAAyE,EACA,KAAAC,EACA,SAAU,EAChB,CAAK,CACF,CACD,gBAAiB,QACf/M,EAAA6F,EAAA,KAAKwK,MAAL,MAAArQ,EAAoB,gBACrB,CACD,uBAAwB,CACtB,OAAO6F,EAAA,KAAKwK,KAAiB,KAAK,YACnC,CAiBD,WAAY,CACV,UAAWhI,KAAUxC,EAAA,KAAKwM,IACxBhK,EAAO,OAAM,EAEfpG,EAAA,KAAKkO,GAAA8F,IAAL,UAAoBpQ,EAAA,KAAKyK,IAAY,OAAQ,EAC9C,CACD,aAAc,OACZ,GAAI,EAAAzK,EAAA,KAAKwK,MACPxK,EAAA,KAAKwK,IAAc,iBACfxK,EAAA,KAAKuM,MAAU3X,GAAqB,QAItC,GAAAuF,EAAA6F,EAAA,KAAKgL,MAAL,MAAA7Q,EAA6B,mBAG5B,KAAK,aAGV,WAAWqI,KAAUxC,EAAA,KAAKwM,IACxBhK,EAAO,SAAQ,EAEjBxC,EAAA,KAAKwM,IAAiB,QACtBpQ,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,kBAAmB,EACzB,GACG,CACD,yBAAyBtf,EAAGO,EAAG+f,EAAW,GAAO,CAI/C,GAHKA,GACH,KAAK,eAAc,EAEjB,CAAC,KAAK,aACR,OAEFvR,EAAA,KAAK8M,IAAa,CAAC,GAAK7b,EACxB+O,EAAA,KAAK8M,IAAa,CAAC,GAAKtb,EACxB,KAAM,CAACggB,EAAQC,CAAM,EAAIzR,EAAA,KAAK8M,IACxB+C,EAAU,CAAC,GAAG7P,EAAA,KAAKwM,GAAgB,EACnCkF,EAAe,IACjB1R,EAAA,KAAK+M,KACP,aAAa/M,EAAA,KAAK+M,GAAqB,EAEzC7M,EAAA,KAAK6M,GAAwB,WAAW,IAAM,CAC5C7M,EAAA,KAAK6M,GAAwB,MAC7B/M,EAAA,KAAK8M,IAAa,CAAC,EAAI9M,EAAA,KAAK8M,IAAa,CAAC,EAAI,EAC9C,KAAK,YAAY,CACf,IAAK,IAAM,CACT,UAAWtK,KAAUqN,EACf7P,EAAA,KAAKyK,IAAY,IAAIjI,EAAO,EAAE,IAChCA,EAAO,gBAAgBgP,EAAQC,CAAM,EACrCjP,EAAO,gBAAe,EAG3B,EACD,KAAM,IAAM,CACV,UAAWA,KAAUqN,EACf7P,EAAA,KAAKyK,IAAY,IAAIjI,EAAO,EAAE,IAChCA,EAAO,gBAAgB,CAACgP,EAAQ,CAACC,CAAM,EACvCjP,EAAO,gBAAe,EAG3B,EACD,SAAU,EAClB,CAAO,CACF,EAAEkP,CAAY,GACf,UAAWlP,KAAUqN,EACnBrN,EAAO,gBAAgBvR,EAAGO,CAAC,EAC3BgR,EAAO,gBAAe,CAEzB,CACD,kBAAmB,CACjB,GAAK,KAAK,aAGV,MAAK,kBAAkB,EAAI,EAC3BtC,EAAA,KAAKiL,GAAmB,IAAI,KAC5B,UAAW3I,KAAUxC,EAAA,KAAKwM,IACxBxM,EAAA,KAAKmL,IAAiB,IAAI3I,EAAQ,CAChC,OAAQA,EAAO,EACf,OAAQA,EAAO,EACf,eAAgBA,EAAO,UACvB,KAAM,EACN,KAAM,EACN,aAAc,EACtB,CAAO,EAEJ,CACD,gBAAiB,CACf,GAAI,CAACxC,EAAA,KAAKmL,IACR,MAAO,GAET,KAAK,kBAAkB,EAAK,EAC5B,MAAM9wB,EAAM2lB,EAAA,KAAKmL,IACjBjL,EAAA,KAAKiL,GAAmB,MACxB,IAAIwG,EAAyB,GAC7B,SAAW,CAAC,CACV,EAAA1gB,EACA,EAAAO,EACA,UAAAof,CACN,EAAOziC,CAAK,IAAKkM,EACXlM,EAAM,KAAO8iB,EACb9iB,EAAM,KAAOqjB,EACbrjB,EAAM,aAAeyiC,EACrBe,MAA2B1gB,IAAM9iB,EAAM,QAAUqjB,IAAMrjB,EAAM,QAAUyiC,IAAcziC,EAAM,gBAE7F,GAAI,CAACwjC,EACH,MAAO,GAET,MAAMC,EAAO,CAACpP,EAAQvR,EAAGO,EAAGof,IAAc,CACxC,GAAI5Q,EAAA,KAAKyK,IAAY,IAAIjI,EAAO,EAAE,EAAG,CACnC,MAAMsC,EAAS9E,EAAA,KAAK0K,IAAW,IAAIkG,CAAS,EACxC9L,EACFtC,EAAO,sBAAsBsC,EAAQ7T,EAAGO,CAAC,GAEzCgR,EAAO,UAAYoO,EACnBpO,EAAO,EAAIvR,EACXuR,EAAO,EAAIhR,EAEd,CACP,EACI,YAAK,YAAY,CACf,IAAK,IAAM,CACT,SAAW,CAACgR,EAAQ,CAClB,KAAAqP,EACA,KAAAC,EACA,aAAAC,CACD,KAAK13B,EACJu3B,EAAKpP,EAAQqP,EAAMC,EAAMC,CAAY,CAExC,EACD,KAAM,IAAM,CACV,SAAW,CAACvP,EAAQ,CAClB,OAAAwP,EACA,OAAAC,EACA,eAAAC,CACD,KAAK73B,EACJu3B,EAAKpP,EAAQwP,EAAQC,EAAQC,CAAc,CAE9C,EACD,SAAU,EAChB,CAAK,EACM,EACR,CACD,oBAAoBC,EAAIC,EAAI,CAC1B,GAAKpS,EAAA,KAAKmL,IAGV,UAAW3I,KAAUxC,EAAA,KAAKmL,IAAiB,KAAI,EAC7C3I,EAAO,KAAK2P,EAAIC,CAAE,CAErB,CACD,QAAQ5P,EAAQ,CACd,GAAIA,EAAO,SAAW,KAAM,CAC1B,MAAMsC,EAAS,KAAK,SAAStC,EAAO,SAAS,EACzCsC,GACFA,EAAO,aAAatC,CAAM,EAC1BsC,EAAO,aAAatC,CAAM,IAE1B,KAAK,UAAUA,CAAM,EACrB,KAAK,uBAAuBA,CAAM,EAClCA,EAAO,QAAO,EAEtB,MACMA,EAAO,OAAO,aAAaA,CAAM,CAEpC,CACD,IAAI,0BAA2B,OAC7B,QAAOrI,EAAA,KAAK,cAAL,YAAAA,EAAkB,4BAA6B6F,EAAA,KAAKwM,IAAiB,OAAS,GAAK,KAAK,oBAAoB,wBAAuB,CAC3I,CACD,SAAShK,EAAQ,CACf,OAAOxC,EAAA,KAAKwK,MAAkBhI,CAC/B,CACD,WAAY,CACV,OAAOxC,EAAA,KAAKwK,GACb,CACD,SAAU,CACR,OAAOxK,EAAA,KAAKuM,GACb,CACD,IAAI,cAAe,CACjB,OAAOhV,GAAO,KAAM,eAAgB,IAAImP,EAAc,CACvD,CACD,kBAAkBwI,EAAW,CAC3B,GAAI,CAACA,EACH,OAAO,KAET,MAAML,EAAY,SAAS,eAC3B,QAASnpC,EAAI,EAAG05B,EAAKyP,EAAU,WAAYnpC,EAAI05B,EAAI15B,IACjD,GAAI,CAACwpC,EAAU,SAASL,EAAU,WAAWnpC,CAAC,EAAE,uBAAuB,EACrE,OAAO,KAGX,KAAM,CACJ,EAAG+oC,EACH,EAAGC,EACH,MAAO2D,EACP,OAAQC,CACd,EAAQpD,EAAU,wBACd,IAAIqD,EACJ,OAAQrD,EAAU,aAAa,oBAAoB,EAAC,CAClD,IAAK,KACHqD,EAAU,CAACthB,EAAGO,EAAGR,EAAGM,KAAO,CACzB,GAAIE,EAAIkd,GAAU4D,EAClB,EAAG,GAAKrhB,EAAID,EAAIyd,GAAU4D,EAC1B,MAAO/gB,EAAIghB,EACX,OAAQthB,EAAIqhB,CACtB,GACQ,MACF,IAAK,MACHE,EAAU,CAACthB,EAAGO,EAAGR,EAAGM,KAAO,CACzB,EAAG,GAAKL,EAAID,EAAIyd,GAAU4D,EAC1B,EAAG,GAAK7gB,EAAIF,EAAIod,GAAU4D,EAC1B,MAAOthB,EAAIqhB,EACX,OAAQ/gB,EAAIghB,CACtB,GACQ,MACF,IAAK,MACHC,EAAU,CAACthB,EAAGO,EAAGR,EAAGM,KAAO,CACzB,EAAG,GAAKE,EAAIF,EAAIod,GAAU4D,EAC1B,GAAIrhB,EAAIwd,GAAU4D,EAClB,MAAO/gB,EAAIghB,EACX,OAAQthB,EAAIqhB,CACtB,GACQ,MACF,QACEE,EAAU,CAACthB,EAAGO,EAAGR,EAAGM,KAAO,CACzB,GAAIL,EAAIwd,GAAU4D,EAClB,GAAI7gB,EAAIkd,GAAU4D,EAClB,MAAOthB,EAAIqhB,EACX,OAAQ/gB,EAAIghB,CACtB,GACQ,KACH,CACD,MAAMvN,EAAQ,GACd,QAASr/B,EAAI,EAAG05B,EAAKyP,EAAU,WAAYnpC,EAAI05B,EAAI15B,IAAK,CACtD,MAAM8sC,EAAQ3D,EAAU,WAAWnpC,CAAC,EACpC,GAAI,CAAA8sC,EAAM,UAGV,SAAW,CACT,EAAAvhB,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,CACR,IAAWorC,EAAM,iBACL5qC,IAAU,GAAKR,IAAW,GAG9B29B,EAAM,KAAKwN,EAAQthB,EAAGO,EAAG5pB,EAAOR,CAAM,CAAC,CAE1C,CACD,OAAO29B,EAAM,SAAW,EAAI,KAAOA,CACpC,CACD,6BAA6B,CAC3B,oBAAAoM,EACA,GAAAp8B,CACJ,EAAK,EACAirB,EAAA,KAAK6K,KAAL3K,EAAA,KAAK2K,GAAgC,IAAI,MAAO,IAAIsG,EAAqBp8B,CAAE,CAC7E,CACD,gCAAgC,CAC9B,oBAAAo8B,CACJ,EAAK,QACDhX,EAAA6F,EAAA,KAAK6K,MAAL,MAAA1Q,EAAkC,OAAOgX,EAC1C,CACD,wBAAwBsB,EAAY,OAClC,MAAMC,GAAWvY,EAAA6F,EAAA,KAAK6K,MAAL,YAAA1Q,EAAkC,IAAIsY,EAAW,KAAK,IACvE,GAAI,CAACC,EACH,OAEF,MAAMlQ,EAASxC,EAAA,KAAK4K,IAAmB,YAAY8H,CAAQ,EACtDlQ,IAGDxC,EAAA,KAAKuM,MAAU3X,GAAqB,MAAQ,CAAC4N,EAAO,iBAGxDA,EAAO,wBAAwBiQ,CAAU,EAC1C,CACD,iBAAiBE,EAAcxB,EAAqBnrC,EAAQ,OAC1D,MAAMw8B,GAASrI,EAAA6F,EAAA,KAAKqM,MAAL,YAAAlS,EAAuB,IAAIwY,GACrCnQ,IAGLA,EAAO,UAAU2O,EAAqBnrC,CAAM,EAC5Cg6B,EAAA,KAAKqM,IAAiB,OAAOsG,CAAY,EAC1C,CACD,iBAAiBA,EAAcnQ,EAAQ,EACpCxC,EAAA,KAAKqM,KAALnM,EAAA,KAAKmM,GAAqB,IAAI,MAAO,IAAIsG,EAAcnQ,CAAM,CAC/D,CACH,EA94CE+H,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YAEAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YAQAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YAmQAhE,GAAA,YAAAiG,GAA6B,SAAC,CAC5B,WAAAL,CACJ,EAAK,CACD,OAAOA,EAAW,WAAa,KAAK,UAAYA,EAAW,cAAgBA,CAC5E,EACD3F,GAAA,YAAAiG,GAAqB,SAACF,EAAW,CAC/B,KAAM,CACJ,aAAA0D,CACD,EAAG,KACJ,GAAIA,EAAa,aAAa1D,CAAS,EACrC,OAAO0D,EAET,UAAW9E,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EACxC,GAAIoD,EAAM,aAAaoB,CAAS,EAC9B,OAAOpB,EAGX,OAAO,IACR,EA6CD1E,GAAA,YAAAyJ,GAAwB,UAAG,CACzB,MAAMhE,EAAY,SAAS,eAC3B,GAAI,CAACA,GAAaA,EAAU,YAC1B,OAGF,MAAMK,EADgB9S,EAAA,KAAK8M,GAAAiG,IAAL,UAAmCN,GACzB,QAAQ,YAAY,EAC9C9J,EAAQ,KAAK,kBAAkBmK,CAAS,EACzCnK,IAGL/E,EAAA,KAAK8L,KAAL5L,EAAA,KAAK4L,GAAsB,IAAIrH,GAAiB,IAAI,GACpDzE,EAAA,KAAK8L,IAAkB,KAAKoD,EAAWnK,EAAO,KAAK,YAAc,KAAK,EACvE,EAMDsE,GAAA,YAAAyJ,GAAgB,UAAG,WACjB,MAAMjE,EAAY,SAAS,eAC3B,GAAI,CAACA,GAAaA,EAAU,YAAa,CACnC7O,EAAA,KAAKyM,OACPtS,EAAA6F,EAAA,KAAK8L,MAAL,MAAA3R,EAAwB,OACxB+F,EAAA,KAAKuM,GAAoB,MACzBrQ,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,gBAAiB,EAC3B,IAEM,MACD,CACD,KAAM,CACJ,WAAAzB,CACD,EAAGD,EACJ,GAAIC,IAAe9O,EAAA,KAAKyM,IACtB,OAGF,MAAMyC,EADgB9S,EAAA,KAAK8M,GAAAiG,IAAL,UAAmCN,GACzB,QAAQ,YAAY,EACpD,GAAI,CAACK,EAAW,CACVlP,EAAA,KAAKyM,OACPvS,EAAA8F,EAAA,KAAK8L,MAAL,MAAA5R,EAAwB,OACxBgG,EAAA,KAAKuM,GAAoB,MACzBrQ,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,gBAAiB,EAC3B,IAEM,MACD,CAMD,IALAxC,EAAA/N,EAAA,KAAK8L,MAAL,MAAAiC,EAAwB,OACxB7N,EAAA,KAAKuM,GAAoBqC,GACzB1S,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,gBAAiB,EACvB,GACQ,EAAAvQ,EAAA,KAAKuM,MAAU3X,GAAqB,WAAaoL,EAAA,KAAKuM,MAAU3X,GAAqB,QAGrFoL,EAAA,KAAKuM,MAAU3X,GAAqB,WACtC,KAAK,eAAe,YAAa,GAAM,EAAI,EAE7CsL,EAAA,KAAK2L,GAAwB,KAAK,gBAC9B,CAAC,KAAK,gBAAgB,CACxB,MAAMkH,EAAc/S,EAAA,KAAKuM,MAAU3X,GAAqB,UAAYwH,EAAA,KAAK+M,GAAAiG,IAAL,UAA2BF,GAAa,KAC5G6D,GAAA,MAAAA,EAAa,gBACb,MAAM1E,EAAK,IAAI,gBACT/K,EAAS,KAAK,eAAe+K,CAAE,EAC/B2E,EAAYnqC,GAAK,CACjBA,EAAE,OAAS,aAAeA,EAAE,SAAW,IAG3CwlC,EAAG,MAAK,EACR0E,GAAA,MAAAA,EAAa,cAAc,IACvBlqC,EAAE,OAAS,aACbuzB,EAAA,KAAKkN,GAAAgG,IAAL,UAAkB,gBAE5B,EACM,OAAO,iBAAiB,YAAa0D,EAAW,CAC9C,OAAA1P,CACR,CAAO,EACD,OAAO,iBAAiB,OAAQ0P,EAAW,CACzC,OAAA1P,CACR,CAAO,CACF,CACF,EACDgG,GAAA,YAAAgG,GAAY,SAACV,EAAmB,GAAI,CAC9B5O,EAAA,KAAKuM,MAAU3X,GAAqB,UACtC,KAAK,mBAAmBga,CAAgB,EAC/B5O,EAAA,KAAKsL,KACdlP,EAAA,KAAKgN,GAAAyJ,IAAL,UAEH,EACDtJ,GAAA,YAAA6D,GAAqB,UAAG,CACtB,SAAS,iBAAiB,kBAAmBhR,EAAA,KAAKiN,GAAAyJ,IAAiB,KAAK,IAAI,EAAG,CAC7E,OAAQ,KAAK,OACnB,CAAK,CACF,EACDtJ,GAAA,YAAA8G,GAAgB,UAAG,CACjB,GAAItQ,EAAA,KAAK2L,IACP,OAEFzL,EAAA,KAAKyL,GAAkB,IAAI,iBAC3B,MAAMrI,EAAS,KAAK,eAAetD,EAAA,KAAK2L,GAAe,EACvD,OAAO,iBAAiB,QAAS,KAAK,MAAM,KAAK,IAAI,EAAG,CACtD,OAAArI,CACN,CAAK,EACD,OAAO,iBAAiB,OAAQ,KAAK,KAAK,KAAK,IAAI,EAAG,CACpD,OAAAA,CACN,CAAK,CACF,EACDmG,GAAA,YAAAgH,GAAmB,UAAG,QACpBtW,EAAA6F,EAAA,KAAK2L,MAAL,MAAAxR,EAAsB,QACtB+F,EAAA,KAAKyL,GAAkB,KACxB,EAmCDjC,GAAA,YAAA4D,GAAmB,UAAG,CACpB,GAAItN,EAAA,KAAKkM,IACP,OAEFhM,EAAA,KAAKgM,GAAqB,IAAI,iBAC9B,MAAM5I,EAAS,KAAK,eAAetD,EAAA,KAAKkM,GAAkB,EAC1D,OAAO,iBAAiB,UAAW,KAAK,QAAQ,KAAK,IAAI,EAAG,CAC1D,OAAA5I,CACN,CAAK,EACD,OAAO,iBAAiB,QAAS,KAAK,MAAM,KAAK,IAAI,EAAG,CACtD,OAAAA,CACN,CAAK,CACF,EACDqG,GAAA,YAAAgG,GAAsB,UAAG,QACvBxV,EAAA6F,EAAA,KAAKkM,MAAL,MAAA/R,EAAyB,QACzB+F,EAAA,KAAKgM,GAAqB,KAC3B,EACDtC,GAAA,YAAA8F,GAAsB,UAAG,CACvB,GAAI1P,EAAA,KAAK+K,IACP,OAEF7K,EAAA,KAAK6K,GAAe,IAAI,iBACxB,MAAMzH,EAAS,KAAK,eAAetD,EAAA,KAAK+K,GAAY,EACpD,SAAS,iBAAiB,OAAQ,KAAK,KAAK,KAAK,IAAI,EAAG,CACtD,OAAAzH,CACN,CAAK,EACD,SAAS,iBAAiB,MAAO,KAAK,IAAI,KAAK,IAAI,EAAG,CACpD,OAAAA,CACN,CAAK,EACD,SAAS,iBAAiB,QAAS,KAAK,MAAM,KAAK,IAAI,EAAG,CACxD,OAAAA,CACN,CAAK,CACF,EACDuG,GAAA,YAAA+F,GAAyB,UAAG,QAC1BzV,EAAA6F,EAAA,KAAK+K,MAAL,MAAA5Q,EAAmB,QACnB+F,EAAA,KAAK6K,GAAe,KACrB,EACDjB,GAAA,YAAAuD,GAAwB,UAAG,CACzB,MAAM/J,EAAS,KAAK,QACpB,SAAS,iBAAiB,WAAY,KAAK,SAAS,KAAK,IAAI,EAAG,CAC9D,OAAAA,CACN,CAAK,EACD,SAAS,iBAAiB,OAAQ,KAAK,KAAK,KAAK,IAAI,EAAG,CACtD,OAAAA,CACN,CAAK,CACF,EAgJDyG,GAAA,YAAAwG,GAAqB,SAACrX,EAAS,CACV,OAAO,QAAQA,CAAO,EAAE,KAAK,CAAC,CAACxxB,EAAKyG,CAAK,IAAM6xB,EAAA,KAAK6M,IAAgBnlC,CAAG,IAAMyG,CAAK,IAEnG,KAAK,UAAU,SAAS,gCAAiC,CACvD,OAAQ,KACR,QAAS,OAAO,OAAO6xB,EAAA,KAAK6M,IAAiB3T,CAAO,CAC5D,CAAO,EACG8G,EAAA,KAAKuM,MAAU3X,GAAqB,WAAasE,EAAQ,oBAAsB,IACjFkD,EAAA,KAAK4N,GAAA2G,IAAL,UAAuB,CAAC,CAAChc,GAA2B,eAAgB,EAAI,CAAC,GAG9E,EACDqV,GAAA,YAAA2G,GAAiB,SAACzX,EAAS,CACzB,KAAK,UAAU,SAAS,gCAAiC,CACvD,OAAQ,KACR,QAAAA,CACN,CAAK,CACF,EA0KK+Q,GAAA,YAAA+G,GAAU,gBAAG,CACjB,GAAI,CAAChR,EAAA,KAAKgM,IAAY,CACpB9L,EAAA,KAAK8L,GAAa,IAClB,MAAMiH,EAAW,GACjB,UAAWnF,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EACxCuI,EAAS,KAAKnF,EAAM,OAAQ,GAE9B,MAAM,QAAQ,IAAImF,CAAQ,EAC1B,UAAWzQ,KAAUxC,EAAA,KAAKyK,IAAY,OAAM,EAC1CjI,EAAO,OAAM,CAEhB,CACF,EACD0H,GAAA,YAAA6G,GAAW,UAAG,CAEZ,GADA,KAAK,YAAW,EACZ/Q,EAAA,KAAKgM,IAAY,CACnB9L,EAAA,KAAK8L,GAAa,IAClB,UAAW8B,KAAS9N,EAAA,KAAK0K,IAAW,OAAM,EACxCoD,EAAM,QAAO,EAEf,UAAWtL,KAAUxC,EAAA,KAAKyK,IAAY,OAAM,EAC1CjI,EAAO,QAAO,CAEjB,CACF,EAgDD2H,GAAA,YAAAgG,GAAiB,SAAC3N,EAAQ,CACxB,MAAMsL,EAAQ9N,EAAA,KAAK0K,IAAW,IAAIlI,EAAO,SAAS,EAC9CsL,EACFA,EAAM,aAAatL,CAAM,GAEzB,KAAK,UAAUA,CAAM,EACrB,KAAK,uBAAuBA,CAAM,EAErC,EAUG4H,GAAA,YAAAgH,GAAmB,UAAG,CACxB,IAAIC,EAAK,KACT,IAAKA,KAAMrR,EAAA,KAAKwM,IAAkB,CAClC,OAAO6E,CACR,EAuFDhH,GAAA,YAAAmG,GAAQ,UAAG,CACT,GAAIxQ,EAAA,KAAKyK,IAAY,OAAS,EAC5B,MAAO,GAET,GAAIzK,EAAA,KAAKyK,IAAY,OAAS,EAC5B,UAAWjI,KAAUxC,EAAA,KAAKyK,IAAY,OAAM,EAC1C,OAAOjI,EAAO,UAGlB,MAAO,EACR,EA+BD8H,GAAA,YAAA8F,GAAc,SAACP,EAAS,CACtB,UAAWrN,KAAUxC,EAAA,KAAKwM,IACxBhK,EAAO,SAAQ,EAEjBxC,EAAA,KAAKwM,IAAiB,QACtB,UAAWhK,KAAUqN,EACfrN,EAAO,YAGXxC,EAAA,KAAKwM,IAAiB,IAAIhK,CAAM,EAChCA,EAAO,OAAM,GAEfpG,EAAA,KAAK2N,GAAAwG,IAAL,UAA2B,CACzB,kBAAmB,KAAK,YAC9B,EACG,EAzjCDhpC,GArDI6gC,GAqDG,kBAAkB,GACzB7gC,GAtDI6gC,GAsDG,gBAAgB,IAtDzB,IAAMvT,GAANuT,0DAm5CA,MAAM8K,GAAN,MAAMA,EAAQ,CAeZ,YAAY1Q,EAAQ,CA+DpBzF,EAAA,KAAIoW,IAkHJpW,EAAA,KAAMqW,IA/LNrW,EAAA,KAAAmG,GAAW,MACXnG,EAAA,KAAAsW,GAAqB,IACrBtW,EAAA,KAAAuW,GAAiB,MACjBvW,EAAA,KAAAwW,GAAsB,MACtBxW,EAAA,KAAAyW,GAAkB,MAClBzW,EAAA,KAAA0W,GAAyB,MACzB1W,EAAA,KAAA2W,GAA0B,IAC1B3W,EAAA,KAAA4W,GAAS,MACT5W,EAAA,KAAAiG,GAAU,MACVjG,EAAA,KAAA6W,GAAe,MACf7W,EAAA,KAAA8W,GAAsB,MACtB9W,EAAA,KAAA+W,GAAqB,IAInB5T,EAAA,KAAK8C,GAAUR,GACftC,EAAA,KAAK4T,GAAqBtR,EAAO,WAAW,mBAC5CxC,EAAAkT,GAAQa,KAAR7T,EAAAgT,GAAQa,GAAmB,OAAO,OAAO,CACvC,MAAO,yCACP,cAAe,+CACf,QAAS,2CACT,gBAAiB,iDACjB,OAAQ,6CACR,eAAgB,kDACtB,CAAK,EACF,CACD,OAAO,WAAWC,EAAM,CACtBd,GAAQ,QAARA,GAAQ,MAAUc,EACnB,CACD,MAAM,QAAS,CACb,MAAMpQ,EAAU1D,EAAA,KAAKoT,GAAiB,SAAS,cAAc,QAAQ,GACrE1P,EAAQ,UAAY,UACpBA,EAAQ,SAAW,IACnB,MAAMqQ,EAAQ/T,EAAA,KAAKqT,GAAsB,SAAS,cAAc,MAAM,GACtE3P,EAAQ,OAAOqQ,CAAK,EAChBjU,EAAA,KAAK8T,KACPlQ,EAAQ,UAAU,IAAI,KAAK,EAC3BA,EAAQ,aAAa,eAAgB5D,EAAAkT,GAAQa,IAAe,OAAO,EACnEE,EAAM,aAAa,eAAgBjU,EAAAkT,GAAQa,IAAe,eAAe,CAAC,IAE1EnQ,EAAQ,aAAa,eAAgB,8BAA8B,EACnEqQ,EAAM,aAAa,eAAgB,oCAAoC,GAEzE,MAAM3Q,EAAStD,EAAA,KAAKgD,IAAQ,WAAW,QACvCY,EAAQ,iBAAiB,cAAexM,GAAe,CACrD,OAAAkM,CACN,CAAK,EACDM,EAAQ,iBAAiB,cAAe3+B,GAASA,EAAM,gBAAe,EAAI,CACxE,OAAAq+B,CACN,CAAK,EACD,MAAM4Q,EAAUjvC,GAAS,CACvBA,EAAM,eAAc,EACpB+6B,EAAA,KAAKgD,IAAQ,WAAW,YAAYhD,EAAA,KAAKgD,GAAO,EAC5ChD,EAAA,KAAK8T,KACP9T,EAAA,KAAKgD,IAAQ,iBAAiB,CAC5B,OAAQ,kDACR,KAAM,CACJ,MAAOhD,EAAA,KAAKmT,GAAAgB,GACb,CACX,CAAS,CAET,EACI,OAAAvQ,EAAQ,iBAAiB,QAASsQ,EAAS,CACzC,QAAS,GACT,OAAA5Q,CACN,CAAK,EACDM,EAAQ,iBAAiB,UAAW3+B,GAAS,CACvCA,EAAM,SAAW2+B,GAAW3+B,EAAM,MAAQ,UAC5Ci7B,EAAA,KAAKwT,GAA0B,IAC/BQ,EAAQjvC,CAAK,EAErB,EAAO,CACD,OAAAq+B,CACN,CAAK,EACD,MAAMlH,EAAA,KAAKgX,GAAAgB,IAAL,WACCxQ,CACR,CAID,QAAS,CACF5D,EAAA,KAAKsT,MAGVtT,EAAA,KAAKsT,IAAe,MAAM,CACxB,aAActT,EAAA,KAAK0T,GACzB,CAAK,EACDxT,EAAA,KAAKwT,GAA0B,IAChC,CACD,SAAU,CACR,OAAI1T,EAAA,KAAK8T,IACA9T,EAAA,KAAKkD,MAAa,KAEpB,CAAClD,EAAA,KAAKkD,KAAY,CAAClD,EAAA,KAAKqT,GAChC,CACD,SAAU,CACR,OAAIrT,EAAA,KAAK8T,IACA9T,EAAA,KAAKkD,MAAa,MAAQ,CAAC,CAAClD,EAAA,KAAK4T,IAEnC,KAAK,SACb,CACD,IAAI,aAAc,CAChB,OAAO5T,EAAA,KAAK4T,GACb,CACD,MAAM,eAAeS,EAAa,CAC5BrU,EAAA,KAAKkD,MAAa,OAGtBhD,EAAA,KAAK0T,GAAeS,GACpBnU,EAAA,KAAK2T,GAAsB,MAAMX,GAAQ,MAAM,IAAI,+DAAgE,CACjH,iBAAkBmB,CACxB,CAAK,GACDjY,EAAA,KAAKgX,GAAAgB,IAAL,WACD,CACD,mBAAmBE,EAAa,GAAO,OACrC,GAAI,CAACtU,EAAA,KAAK8T,KAAsB9T,EAAA,KAAKkD,IAAU,EAC7C/I,EAAA6F,EAAA,KAAK2T,MAAL,MAAAxZ,EAAa,SACb+F,EAAA,KAAKyT,GAAS,MACd,MACD,CACD,GAAI,CAAC3T,EAAA,KAAK2T,IAAQ,CAChB,MAAMY,EAAQrU,EAAA,KAAKyT,GAAS,SAAS,cAAc,KAAK,GACxDY,EAAM,UAAY,iBAClBvU,EAAA,KAAKgD,IAAQ,IAAI,OAAOuR,CAAK,CAC9B,CACDvU,EAAA,KAAK2T,IAAO,UAAU,OAAO,SAAU,CAACW,CAAU,CACnD,CACD,UAAUE,EAAc,CACtB,IAAI5Q,EAAU5D,EAAA,KAAKkD,IACnB,MAAI,CAACsR,GAAgBxU,EAAA,KAAK4T,MAAiBhQ,IACzCA,EAAU5D,EAAA,KAAK6T,KAEV,CACL,QAAAjQ,EACA,WAAY5D,EAAA,KAAKqT,IACjB,YAAarT,EAAA,KAAK4T,IAClB,mBAAoB5T,EAAA,KAAK6T,GAC/B,CACG,CACD,IAAI,MAAO,CACT,MAAO,CACL,QAAS7T,EAAA,KAAKkD,IACd,WAAYlD,EAAA,KAAKqT,GACvB,CACG,CACD,IAAI,KAAK,CACP,QAAAzP,EACA,WAAA6Q,EACA,YAAAJ,EACA,mBAAAK,EACA,OAAAC,EAAS,EACb,EAAK,CACGN,IACFnU,EAAA,KAAK0T,GAAeS,GACpBnU,EAAA,KAAK2T,GAAsBa,IAEzB,EAAA1U,EAAA,KAAKkD,MAAaU,GAAW5D,EAAA,KAAKqT,MAAuBoB,KAGxDE,IACHzU,EAAA,KAAKgD,GAAWU,GAChB1D,EAAA,KAAKmT,GAAqBoB,IAE5BrY,EAAA,KAAKgX,GAAAgB,IAAL,WACD,CACD,OAAOrpB,EAAU,GAAO,CACjBiV,EAAA,KAAKsT,MAGN,CAACvoB,GAAWiV,EAAA,KAAKyT,MACnB,aAAazT,EAAA,KAAKyT,GAAsB,EACxCvT,EAAA,KAAKuT,GAAyB,OAEhCzT,EAAA,KAAKsT,IAAe,SAAW,CAACvoB,EACjC,CACD,OAAQ,CACNiV,EAAA,KAAKgD,IAAQ,iBAAiB,CAC5B,OAAQ,oDACR,KAAM,CACJ,MAAOhD,EAAA,KAAKmT,GAAAgB,GACb,CACP,CAAK,CACF,CACD,SAAU,UACRha,EAAA6F,EAAA,KAAKsT,MAAL,MAAAnZ,EAAqB,SACrB+F,EAAA,KAAKoT,GAAiB,MACtBpT,EAAA,KAAKqT,GAAsB,MAC3BrT,EAAA,KAAKsT,GAAkB,OACvBtZ,EAAA8F,EAAA,KAAK2T,MAAL,MAAAzZ,EAAa,SACbgG,EAAA,KAAKyT,GAAS,KACf,CAsEH,EApQEzQ,GAAA,YACAmQ,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACA3Q,GAAA,YACA4Q,GAAA,YACAC,GAAA,YACAC,GAAA,YACOC,GAAA,YAiEHZ,GAAA,YAAAgB,GAAM,UAAG,CACX,OAAOnU,EAAA,KAAKkD,KAAY,SAAWlD,EAAA,KAAKkD,MAAa,MAAQ,KAAK,aAAe,UAAY,SAC9F,EAgHKkQ,GAAA,YAAAgB,GAAS,gBAAG,WAChB,MAAMvQ,EAAS7D,EAAA,KAAKsT,IACpB,GAAI,CAACzP,EACH,OAEF,GAAI7D,EAAA,KAAK8T,KAIP,GAHAjQ,EAAO,UAAU,OAAO,OAAQ,CAAC,CAAC7D,EAAA,KAAKkD,GAAQ,EAC/CW,EAAO,aAAa,eAAgB7D,EAAAkT,GAAQa,IAAe/T,EAAA,KAAKmT,GAAAgB,GAAM,CAAC,GACvEha,EAAA6F,EAAA,KAAKuT,MAAL,MAAApZ,EAA0B,aAAa,eAAgB6F,EAAAkT,GAAQa,IAAe,GAAG/T,EAAA,KAAKmT,GAAAgB,GAAM,QAAQ,GAChG,CAACnU,EAAA,KAAKkD,IAAU,EAClBhJ,EAAA8F,EAAA,KAAKwT,MAAL,MAAAtZ,EAAsB,SACtB,MACD,MACI,CACL,GAAI,CAAC8F,EAAA,KAAKkD,KAAY,CAAClD,EAAA,KAAKqT,IAAoB,CAC9CxP,EAAO,UAAU,OAAO,MAAM,GAC9BkK,EAAA/N,EAAA,KAAKwT,MAAL,MAAAzF,EAAsB,SACtB,MACD,CACDlK,EAAO,UAAU,IAAI,MAAM,EAC3BA,EAAO,aAAa,eAAgB,mCAAmC,CACxE,CACD,IAAI+Q,EAAU5U,EAAA,KAAKwT,IACnB,GAAI,CAACoB,EAAS,CACZ1U,EAAA,KAAKsT,GAAkBoB,EAAU,SAAS,cAAc,MAAM,GAC9DA,EAAQ,UAAY,UACpBA,EAAQ,aAAa,OAAQ,SAAS,EACtCA,EAAQ,GAAK,oBAAoB5U,EAAA,KAAKgD,IAAQ,EAAE,GAChD,MAAM6R,EAAwB,IACxBvR,EAAStD,EAAA,KAAKgD,IAAQ,WAAW,QACvCM,EAAO,iBAAiB,QAAS,IAAM,CACrC,aAAatD,EAAA,KAAKyT,GAAsB,EACxCvT,EAAA,KAAKuT,GAAyB,KACtC,EAAS,CACD,KAAM,EACd,CAAO,EACD5P,EAAO,iBAAiB,aAAc,IAAM,CAC1C3D,EAAA,KAAKuT,GAAyB,WAAW,IAAM,CAC7CvT,EAAA,KAAKuT,GAAyB,MAC9BzT,EAAA,KAAKwT,IAAgB,UAAU,IAAI,MAAM,EACzCxT,EAAA,KAAKgD,IAAQ,iBAAiB,CAC5B,OAAQ,kBACpB,CAAW,CACF,EAAE6R,CAAqB,EAChC,EAAS,CACD,OAAAvR,CACR,CAAO,EACDO,EAAO,iBAAiB,aAAc,IAAM,OACtC7D,EAAA,KAAKyT,MACP,aAAazT,EAAA,KAAKyT,GAAsB,EACxCvT,EAAA,KAAKuT,GAAyB,QAEhCtZ,EAAA6F,EAAA,KAAKwT,MAAL,MAAArZ,EAAsB,UAAU,OAAO,OAC/C,EAAS,CACD,OAAAmJ,CACR,CAAO,CACF,CACGtD,EAAA,KAAKqT,IACPuB,EAAQ,aAAa,eAAgB,0CAA0C,GAE/EA,EAAQ,gBAAgB,cAAc,EACtCA,EAAQ,YAAc5U,EAAA,KAAKkD,KAExB0R,EAAQ,YACX/Q,EAAO,OAAO+Q,CAAO,EAEvB,MAAMroC,EAAUyzB,EAAA,KAAKgD,IAAQ,qBAAoB,EACjDz2B,GAAA,MAAAA,EAAS,aAAa,mBAAoBqoC,EAAQ,GACnD,EAvPD7X,EAbImW,GAaGa,GAAiB,MACxBxsC,GAdI2rC,GAcG,QAAQ,MAdjB,IAAM4B,GAAN5B,6DAyQA,MAAM6B,GAAN,MAAMA,EAAa,CAajB,YAAY,CACV,UAAA1M,EACA,mBAAA2M,EAAqB,KACrB,kBAAAC,EAAoB,KACpB,aAAAC,EAAe,KACf,WAAAC,EAAa,KACb,WAAAC,EAAa,KACb,OAAA9R,CACJ,EAAK,CAiBHvG,EAAA,KAAAsY,IAoEAtY,EAAA,KAAAuY,IA4CAvY,EAAA,KAAAwY,IArJAxY,EAAA,KAAAiQ,GAAA,QACAjQ,EAAA,KAAAyY,GAAc,IACdzY,EAAA,KAAA0Y,GAAqB,MACrB1Y,EAAA,KAAA2Y,GAAA,QACA3Y,EAAA,KAAA4Y,GAAA,QACA5Y,EAAA,KAAA6Y,GAAA,QACA7Y,EAAA,KAAA8Y,GAAA,QACA9Y,EAAA,KAAA+Y,GAAiB,MACjB/Y,EAAA,KAAAgZ,GAAA,QACAhZ,EAAA,KAAAiZ,GAAa,MACbjZ,EAAA,KAAAkZ,GAAA,QACAlZ,EAAA,KAAAmZ,GAAe,MAUbhW,EAAA,KAAK8M,GAAa3E,GAClBnI,EAAA,KAAKuV,GAAqBR,GAC1B/U,EAAA,KAAKwV,GAAsBV,GAC3B9U,EAAA,KAAKyV,GAAgBT,GACrBhV,EAAA,KAAK0V,GAAcT,GACnBjV,EAAA,KAAK2V,GAAcT,GACnBlV,EAAA,KAAK+V,GAAkB,IAAI,iBAC3B/V,EAAA,KAAK6V,GAAU,YAAY,IAAI,CAACzS,EAAQtD,EAAA,KAAKiW,IAAgB,MAAM,CAAC,GACpE5N,EAAU,iBAAiB,aAAcjM,EAAA,KAAKiZ,GAAAc,IAAc,KAAK,IAAI,EAAG,CACtE,QAAS,GACT,OAAQnW,EAAA,KAAK+V,GACnB,CAAK,CACF,CACD,IAAI,6BAA8B,CAChC,MAAO,IAAKrgB,GAAY,UACzB,CA+HD,SAAU,UACRyE,EAAA6F,EAAA,KAAKiW,MAAL,MAAA9b,EAAsB,QACtB+F,EAAA,KAAK+V,GAAkB,OACvB/b,EAAA8F,EAAA,KAAK8V,MAAL,MAAA5b,EAAqB,QACrBgG,EAAA,KAAK4V,GAAiB,KACvB,CACH,EAzKE9I,GAAA,YACAwI,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YA0BAb,GAAA,YAAAc,GAAa,SAAChJ,EAAK,WACjB,IAAIhT,EAAA6F,EAAA,KAAK0V,MAAL,MAAAvb,EAAA,WACF,OAEF,GAAIgT,EAAI,QAAQ,SAAW,EAAG,CAC5B,GAAInN,EAAA,KAAK8V,IACP,OAEF,MAAMM,EAAgBlW,EAAA,KAAK4V,GAAiB,IAAI,iBAC1CxS,EAAS,YAAY,IAAI,CAACtD,EAAA,KAAK+V,IAASK,EAAc,MAAM,CAAC,EAC7D/N,EAAYrI,EAAA,KAAKgN,IACjBrhB,EAAO,CACX,QAAS,GACT,OAAA2X,EACA,QAAS,EACjB,EACY+S,EAAoBxtC,GAAK,OACzBA,EAAE,cAAgB,WACpBsxB,EAAA6F,EAAA,KAAK8V,MAAL,MAAA3b,EAAqB,QACrB+F,EAAA,KAAK4V,GAAiB,MAEhC,EACMzN,EAAU,iBAAiB,cAAex/B,GAAK,CACzCA,EAAE,cAAgB,UACpB2uB,GAAU3uB,CAAC,EACXwtC,EAAkBxtC,CAAC,EAEtB,EAAE8iB,CAAI,EACP0c,EAAU,iBAAiB,YAAagO,EAAmB1qB,CAAI,EAC/D0c,EAAU,iBAAiB,gBAAiBgO,EAAmB1qB,CAAI,EACnE,MACD,CACD,GAAI,CAACqU,EAAA,KAAKkW,IAAc,CACtBhW,EAAA,KAAKgW,GAAe,IAAI,iBACxB,MAAM5S,EAAS,YAAY,IAAI,CAACtD,EAAA,KAAK+V,IAAS/V,EAAA,KAAKkW,IAAa,MAAM,CAAC,EACjE7N,EAAYrI,EAAA,KAAKgN,IACjBsJ,EAAM,CACV,OAAAhT,EACA,QAAS,GACT,QAAS,EACjB,EACM+E,EAAU,iBAAiB,YAAajM,EAAA,KAAKkZ,GAAAiB,IAAa,KAAK,IAAI,EAAGD,CAAG,EACzE,MAAME,EAAapa,EAAA,KAAKmZ,GAAAkB,IAAY,KAAK,IAAI,EAC7CpO,EAAU,iBAAiB,WAAYmO,EAAYF,CAAG,EACtDjO,EAAU,iBAAiB,cAAemO,EAAYF,CAAG,EACzDA,EAAI,QAAU,GACdjO,EAAU,iBAAiB,cAAe7Q,GAAW8e,CAAG,EACxDjO,EAAU,iBAAiB,cAAe7Q,GAAW8e,CAAG,EACxDjO,EAAU,iBAAiB,gBAAiB7Q,GAAW8e,CAAG,EAC1DjO,EAAU,iBAAiB,YAAa7Q,GAAW8e,CAAG,GACtDpc,EAAA8F,EAAA,KAAK2V,MAAL,MAAAzb,EAAA,UACD,CAED,GADA1C,GAAU2V,CAAG,EACTA,EAAI,QAAQ,SAAW,IAAKY,EAAA/N,EAAA,KAAKyV,MAAL,MAAA1H,EAAA,WAA6B,CAC3D7N,EAAA,KAAK8V,GAAa,MAClB,MACD,CACD,GAAI,CAACU,EAAQC,CAAM,EAAIxJ,EAAI,QACvBuJ,EAAO,WAAaC,EAAO,aAC7B,CAACD,EAAQC,CAAM,EAAI,CAACA,EAAQD,CAAM,GAEpCxW,EAAA,KAAK8V,GAAa,CAChB,QAASU,EAAO,QAChB,QAASA,EAAO,QAChB,QAASC,EAAO,QAChB,QAASA,EAAO,OACtB,EACG,EACDrB,GAAA,YAAAiB,GAAY,SAACpJ,EAAK,OAChB,GAAI,CAACnN,EAAA,KAAKgW,KAAc7I,EAAI,QAAQ,SAAW,EAC7C,OAEF3V,GAAU2V,CAAG,EACb,GAAI,CAACuJ,EAAQC,CAAM,EAAIxJ,EAAI,QACvBuJ,EAAO,WAAaC,EAAO,aAC7B,CAACD,EAAQC,CAAM,EAAI,CAACA,EAAQD,CAAM,GAEpC,KAAM,CACJ,QAASE,EACT,QAASC,CACV,EAAGH,EACE,CACJ,QAASI,EACT,QAASC,CACV,EAAGJ,EACEK,EAAYhX,EAAA,KAAKgW,IACjB,CACJ,QAASiB,EACT,QAASC,EACT,QAASC,EACT,QAASC,CACV,EAAGJ,EACEK,EAAWF,EAAWF,EACtBK,EAAWF,EAAWF,EACtBK,EAAWT,EAAWF,EACtBY,EAAWT,EAAWF,EACtBY,EAAW,KAAK,MAAMF,EAAUC,CAAQ,GAAK,EAC7CE,EAAY,KAAK,MAAML,EAAUC,CAAQ,GAAK,EACpD,GAAI,CAACtX,EAAA,KAAKwV,KAAe,KAAK,IAAIkC,EAAYD,CAAQ,GAAK1C,GAAa,4BACtE,OAMF,GAJAiC,EAAU,QAAUJ,EACpBI,EAAU,QAAUH,EACpBG,EAAU,QAAUF,EACpBE,EAAU,QAAUD,EAChB,CAAC/W,EAAA,KAAKwV,IAAa,CACrBtV,EAAA,KAAKsV,GAAc,IACnB,MACD,CACD,MAAMmC,EAAS,EAAEf,EAAWE,GAAY,GAAID,EAAWE,GAAY,CAAC,GACpE5c,EAAA6F,EAAA,KAAK4V,MAAL,MAAAzb,EAAA,UAAmBwd,EAAQD,EAAWD,EACvC,EACDlC,GAAA,YAAAkB,GAAW,SAACtJ,EAAK,OACXA,EAAI,QAAQ,QAAU,IAG1BnN,EAAA,KAAKkW,IAAa,QAClBhW,EAAA,KAAKgW,GAAe,OACpB/b,EAAA6F,EAAA,KAAK6V,MAAL,MAAA1b,EAAA,WACK6F,EAAA,KAAKgW,MAGVxe,GAAU2V,CAAG,EACbjN,EAAA,KAAK8V,GAAa,MAClB9V,EAAA,KAAKsV,GAAc,KACpB,EAnKH,IAAMlf,GAANye,iMAmLA,MAAM6C,GAAN,MAAMA,EAAiB,CA4DrB,YAAYC,EAAY,CAyLxB9a,EAAA,KAAA+a,IAoJA/a,EAAA,KAAAgb,IAiEAhb,EAAA,KAAAib,IAuBAjb,EAAA,KAAAkb,IAoDAlb,EAAA,KAAAmb,IAWAnb,EAAA,KAAAob,IA2BApb,EAAA,KAAAqb,IAgNArb,EAAA,KAAAsb,IAUAtb,EAAA,KAAAub,IAkCAvb,EAAA,KAAAwb,IAuBAxb,EAAA,KAAAyb,IAUAzb,EAAA,KAAA0b,IAkKA1b,EAAA,KAAA2b,IA0JA3b,EAAA,KAAA4b,IAGA5b,EAAA,KAAA6b,IAKA7b,EAAA,KAAA8b,IAGA9b,EAAA,KAAA+b,IAkBA/b,EAAA,KAAAgc,IAhrCAhc,EAAA,KAAAic,GAAqB,MACrBjc,EAAA,KAAAkc,GAAkB,MAClBlc,EAAA,KAAAmG,GAAW,MACXnG,EAAA,KAAAmc,GAAY,IACZnc,EAAA,KAAAoc,GAAiB,MACjBpc,EAAA,KAAAqc,GAAmB,IACnBrc,EAAA,KAAAsc,GAAmB,IACnBtc,EAAA,KAAAuc,GAAe,MACfvc,EAAA,KAAAwc,GAAqB,MACrBxc,EAAA,KAAAyc,GAAmB,MACnBzc,EAAA,KAAA0c,GAAW,MACX1c,EAAA,KAAA2c,GAAsB,IACtB3c,EAAA,KAAA4c,GAAkB,IAClB5c,EAAA,KAAA6c,GAAe,MACf7c,EAAA,KAAA8c,GAAa,IACb9c,EAAA,KAAA+c,GAAgB,IAChB/c,EAAA,KAAAgd,GAA+B,IAC/Bhd,EAAA,KAAAid,GAAoB,MACpBjd,EAAA,KAAAkd,GAAa,GACbld,EAAA,KAAAmd,GAAa,GACbnd,EAAA,KAAAod,GAAqB,MACrBpd,EAAA,KAAAqd,GAAgB,MAChB7yC,GAAA,eAAU,IACVA,GAAA,oBAAe,MACfA,GAAA,uBAAkB,OAAO,OAAO,IAAI,GACpCA,GAAA,oBAAe,MACfA,GAAA,kBAAa,IACbA,GAAA,kBAAa,MACbA,GAAA,2BAAsB,IAGtBw1B,EAAA,KAAAsd,GAAe,IACftd,EAAA,KAAAud,GAAU1C,GAAiB,WA4BzB,KAAK,OAASC,EAAW,OACzB,KAAK,GAAKA,EAAW,GACrB,KAAK,MAAQ,KAAK,OAAS,KAC3B,KAAK,UAAYA,EAAW,OAAO,UACnC,KAAK,KAAOA,EAAW,KACvB,KAAK,IAAM,KACX,KAAK,WAAaA,EAAW,UAC7B,KAAK,oBAAsB,KAC3B,KAAK,qBAAuB,GAC5B,KAAK,gBAAgB,WAAaA,EAAW,WAC7C,KAAK,oBAAsB,KAC3B,KAAM,CACJ,SAAAzZ,EACA,QAAS,CACP,UAAAsD,EACA,WAAAC,EACA,MAAA4Y,EACA,MAAAC,CACD,CACP,EAAQ,KAAK,OAAO,SAChB,KAAK,SAAWpc,EAChB,KAAK,cAAgB,IAAMA,EAAW,KAAK,WAAW,eAAe,UAAY,IACjF,KAAK,eAAiB,CAACsD,EAAWC,CAAU,EAC5C,KAAK,gBAAkB,CAAC4Y,EAAOC,CAAK,EACpC,KAAM,CAAC5yC,EAAOR,CAAM,EAAI,KAAK,iBAC7B,KAAK,EAAIywC,EAAW,EAAIjwC,EACxB,KAAK,EAAIiwC,EAAW,EAAIzwC,EACxB,KAAK,gBAAkB,GACvB,KAAK,QAAU,EAChB,CApDD,WAAW,yBAA0B,CACnC,MAAMqzC,EAAS7C,GAAiB,UAAU,oBACpChK,EAAQ/Y,GAA0B,gBAClCgZ,EAAMhZ,GAA0B,cACtC,OAAO0C,GAAO,KAAM,0BAA2B,IAAIkQ,GAAgB,CAAC,CAAC,CAAC,YAAa,eAAe,EAAGgT,EAAQ,CAC3G,KAAM,CAAC,CAAC7M,EAAO,CAAC,CACjB,GAAG,CAAC,CAAC,iBAAkB,qBAAqB,EAAG6M,EAAQ,CACtD,KAAM,CAAC,CAAC5M,EAAK,CAAC,CACf,GAAG,CAAC,CAAC,aAAc,gBAAgB,EAAG4M,EAAQ,CAC7C,KAAM,CAAC7M,EAAO,CAAC,CAChB,GAAG,CAAC,CAAC,kBAAmB,sBAAsB,EAAG6M,EAAQ,CACxD,KAAM,CAAC5M,EAAK,CAAC,CACd,GAAG,CAAC,CAAC,UAAW,aAAa,EAAG4M,EAAQ,CACvC,KAAM,CAAC,EAAG,CAAC7M,CAAK,CACjB,GAAG,CAAC,CAAC,eAAgB,mBAAmB,EAAG6M,EAAQ,CAClD,KAAM,CAAC,EAAG,CAAC5M,CAAG,CACf,GAAG,CAAC,CAAC,YAAa,eAAe,EAAG4M,EAAQ,CAC3C,KAAM,CAAC,EAAG7M,CAAK,CAChB,GAAG,CAAC,CAAC,iBAAkB,qBAAqB,EAAG6M,EAAQ,CACtD,KAAM,CAAC,EAAG5M,CAAG,CACnB,CAAK,EAAG,CAAC,CAAC,SAAU,YAAY,EAAG+J,GAAiB,UAAU,yBAAyB,CAAC,CAAC,CAAC,CACvF,CAgCD,IAAI,YAAa,CACf,OAAO,OAAO,eAAe,IAAI,EAAE,YAAY,KAChD,CACD,WAAW,UAAW,CACpB,MAAO,EACR,CACD,WAAW,mBAAoB,CAC7B,OAAOrgB,GAAO,KAAM,oBAAqB,KAAK,cAAc,WAAW,YAAY,CAAC,CACrF,CACD,OAAO,wBAAwBiL,EAAQ,CACrC,MAAMkY,EAAa,IAAIC,GAAW,CAChC,GAAInY,EAAO,OAAO,UAAW,EAC7B,OAAQA,EAAO,OACf,UAAWA,EAAO,UACxB,CAAK,EACDkY,EAAW,oBAAsBlY,EAAO,oBACxCkY,EAAW,QAAU,GACrBA,EAAW,WAAW,uBAAuBA,CAAU,CACxD,CACD,OAAO,WAAW1G,EAAM1P,EAAY,CAYlC,GAXAsT,GAAiB,QAAjBA,GAAiB,MAAU5D,GAC3B4D,GAAiB,eAAjBA,GAAiB,aAAiB,OAAO,OAAO,CAC9C,QAAS,gCACT,UAAW,kCACX,SAAU,iCACV,YAAa,oCACb,YAAa,oCACb,aAAc,qCACd,WAAY,mCACZ,WAAY,kCAClB,CAAK,GACGA,GAAiB,mBAAqB,GACxC,OAEF,MAAMhW,EAAQ,iBAAiB,SAAS,eAAe,EACvDgW,GAAiB,iBAAmB,WAAWhW,EAAM,iBAAiB,iBAAiB,CAAC,GAAK,CAC9F,CACD,OAAO,oBAAoBgZ,EAAOC,EAAQ,CAAE,CAC5C,WAAW,2BAA4B,CACrC,MAAO,EACR,CACD,OAAO,yBAAyBC,EAAM,CACpC,MAAO,EACR,CACD,OAAO,MAAMjhC,EAAMirB,EAAQ,CACzBxM,GAAY,iBAAiB,CAC9B,CACD,IAAI,oBAAqB,CACvB,MAAO,EACR,CACD,IAAI,cAAe,CACjB,OAAO0H,EAAA,KAAKqa,GACb,CACD,IAAI,aAAalsC,EAAO,OACtB+xB,EAAA,KAAKma,GAAelsC,IACpBgsB,EAAA,KAAK,MAAL,MAAAA,EAAU,UAAU,OAAO,YAAahsB,EACzC,CACD,IAAI,gBAAiB,CACnB,MAAO,EACR,CACD,QAAS,CACP,KAAM,CAACuzB,EAAWC,CAAU,EAAI,KAAK,eACrC,OAAQ,KAAK,eAAc,CACzB,IAAK,IACH,KAAK,GAAK,KAAK,OAASA,GAAcD,EAAY,GAClD,KAAK,GAAK,KAAK,MAAQA,GAAaC,EAAa,GACjD,MACF,IAAK,KACH,KAAK,GAAK,KAAK,MAAQ,EACvB,KAAK,GAAK,KAAK,OAAS,EACxB,MACF,IAAK,KACH,KAAK,GAAK,KAAK,OAASA,GAAcD,EAAY,GAClD,KAAK,GAAK,KAAK,MAAQA,GAAaC,EAAa,GACjD,MACF,QACE,KAAK,GAAK,KAAK,MAAQ,EACvB,KAAK,GAAK,KAAK,OAAS,EACxB,KACH,CACD,KAAK,kBAAiB,CACvB,CACD,YAAYt2B,EAAQ,CAClB,KAAK,WAAW,YAAYA,CAAM,CACnC,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,WAAW,YACxB,CACD,iBAAkB,CAChB,KAAK,IAAI,MAAM,OAAS,CACzB,CACD,iBAAkB,CAChB,KAAK,IAAI,MAAM,OAAS20B,EAAA,KAAKsa,GAC9B,CACD,UAAUxV,EAAQ,CACZA,IAAW,MACb,KAAK,UAAYA,EAAO,UACxB,KAAK,eAAiBA,EAAO,gBAE7B1I,EAAA,KAAK2c,GAAAgC,IAAL,WAEF,KAAK,OAASjW,CACf,CACD,QAAQ7/B,EAAO,CACR,KAAK,sBAGL+6B,EAAA,KAAK2Z,IAGRzZ,EAAA,KAAKyZ,GAAkB,IAFvB,KAAK,OAAO,YAAY,IAAI,EAI/B,CACD,SAAS10C,EAAO,OAId,GAHI,CAAC,KAAK,qBAGN,CAAC,KAAK,gBACR,OAEF,MAAMoU,EAASpU,EAAM,cACjBoU,GAAA,MAAAA,EAAQ,QAAQ,IAAI,KAAK,EAAE,MAG/BpU,EAAM,eAAc,GACfk1B,EAAA,KAAK,SAAL,MAAAA,EAAa,qBAChB,KAAK,eAAc,EAEtB,CACD,gBAAiB,CACX,KAAK,UACP,KAAK,OAAM,EAEX,KAAK,OAAM,CAEd,CACD,QAAS,CACP,KAAK,uBAAsB,CAC5B,CACD,wBAAyB,CACvB,KAAK,WAAW,uBAAuB,IAAI,CAC5C,CACD,MAAMlJ,EAAGO,EAAG2gB,EAAIC,EAAI,CAClB,KAAM,CAACxqC,EAAOR,CAAM,EAAI,KAAK,iBAC7B,CAAC+qC,EAAIC,CAAE,EAAI,KAAK,wBAAwBD,EAAIC,CAAE,EAC9C,KAAK,GAAKnhB,EAAIkhB,GAAMvqC,EACpB,KAAK,GAAK4pB,EAAI4gB,GAAMhrC,EACpB,KAAK,kBAAiB,CACvB,CACD,gBAAgB4zC,EAAOC,EAAO,CAC5B,KAAM,CAAC5I,EAAaC,CAAY,EAAI,KAAK,iBACzC,KAAK,MAAM0I,EAAQ3I,EAAa4I,EAAQ3I,EAAc,KAAK,MAAQD,EAAa,KAAK,OAASC,CAAY,EAC1G,KAAK,cAAa,CACnB,CAQD,UAAUrhB,EAAGO,EAAG,CACd4K,EAAA,KAAK0b,GAAAoD,IAAL,UAAgB,KAAK,iBAAkBjqB,EAAGO,EAC3C,CACD,gBAAgBP,EAAGO,EAAG,CACpBwO,EAAA,KAAK4Z,KAAL1Z,EAAA,KAAK0Z,GAAiB,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,MAAM,GAC9Dxd,EAAA,KAAK0b,GAAAoD,IAAL,UAAgB,KAAK,eAAgBjqB,EAAGO,GACxC,KAAK,IAAI,eAAe,CACtB,MAAO,SACb,CAAK,CACF,CACD,iBAAkB,CAChB,KAAK,cAAc,KAAK,EAAG,KAAK,CAAC,CAClC,CACD,KAAK2gB,EAAIC,EAAI,CACXpS,EAAA,KAAK4Z,KAAL1Z,EAAA,KAAK0Z,GAAiB,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,MAAM,GAC9D,KAAM,CACJ,IAAAtY,EACA,iBAAkB,CAAC+Q,EAAaC,CAAY,CAC7C,EAAG,KAGJ,GAFA,KAAK,GAAKH,EAAKE,EACf,KAAK,GAAKD,EAAKE,EACX,KAAK,SAAW,KAAK,EAAI,GAAK,KAAK,EAAI,GAAK,KAAK,EAAI,GAAK,KAAK,EAAI,GAAI,CACzE,KAAM,CACJ,EAAArhB,EACA,EAAAO,CACR,EAAU,KAAK,IAAI,wBACT,KAAK,OAAO,cAAc,KAAMP,EAAGO,CAAC,IACtC,KAAK,GAAK,KAAK,MAAM,KAAK,CAAC,EAC3B,KAAK,GAAK,KAAK,MAAM,KAAK,CAAC,EAE9B,CACD,GAAI,CACF,EAAAP,EACA,EAAAO,CACD,EAAG,KACJ,KAAM,CAAC2pB,EAAIC,CAAE,EAAI,KAAK,mBAAkB,EACxCnqB,GAAKkqB,EACL3pB,GAAK4pB,EACL,KAAM,CACJ,MAAAxZ,CACD,EAAGN,EACJM,EAAM,KAAO,IAAI,IAAM3Q,GAAG,QAAQ,CAAC,CAAC,IACpC2Q,EAAM,IAAM,IAAI,IAAMpQ,GAAG,QAAQ,CAAC,CAAC,IACnC,KAAK,eAAeP,EAAGO,CAAC,EACxB8P,EAAI,eAAe,CACjB,MAAO,SACb,CAAK,CACF,CACD,eAAerQ,EAAGO,EAAG,CAAE,CACvB,cAAcP,EAAGO,EAAG,CAAE,CACtB,IAAI,eAAgB,CAClB,MAAO,CAAC,CAACwO,EAAA,KAAK4Z,MAAiB5Z,EAAA,KAAK4Z,IAAa,CAAC,IAAM,KAAK,GAAK5Z,EAAA,KAAK4Z,IAAa,CAAC,IAAM,KAAK,EACjG,CACD,IAAI,iBAAkB,CACpB,MAAO,CAAC,CAAC5Z,EAAA,KAAK4Z,MAAiB5Z,EAAA,KAAK4Z,IAAa,CAAC,IAAM,KAAK,OAAS5Z,EAAA,KAAK4Z,IAAa,CAAC,IAAM,KAAK,OACrG,CACD,oBAAqB,CACnB,KAAM,CAACvH,EAAaC,CAAY,EAAI,KAAK,iBACnC,CACJ,iBAAA+I,CACD,EAAGzD,GACE3mB,EAAIoqB,EAAmBhJ,EACvB7gB,EAAI6pB,EAAmB/I,EAC7B,OAAQ,KAAK,SAAQ,CACnB,IAAK,IACH,MAAO,CAAC,CAACrhB,EAAGO,CAAC,EACf,IAAK,KACH,MAAO,CAACP,EAAGO,CAAC,EACd,IAAK,KACH,MAAO,CAACP,EAAG,CAACO,CAAC,EACf,QACE,MAAO,CAAC,CAACP,EAAG,CAACO,CAAC,CACjB,CACF,CACD,IAAI,kBAAmB,CACrB,MAAO,EACR,CACD,kBAAkB4M,EAAW,KAAK,SAAU,CAC1C,KAAM,CACJ,IAAK,CACH,MAAAwD,CACD,EACD,eAAgB,CAACF,EAAWC,CAAU,CACvC,EAAG,KACJ,GAAI,CACF,EAAA1Q,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,CACD,EAAG,KAKJ,GAJAQ,GAAS85B,EACTt6B,GAAUu6B,EACV1Q,GAAKyQ,EACLlQ,GAAKmQ,EACD,KAAK,iBACP,OAAQvD,EAAQ,CACd,IAAK,GACHnN,EAAIuE,GAAUvE,EAAG,EAAGyQ,EAAY95B,CAAK,EACrC4pB,EAAIgE,GAAUhE,EAAG,EAAGmQ,EAAav6B,CAAM,EACvC,MACF,IAAK,IACH6pB,EAAIuE,GAAUvE,EAAG,EAAGyQ,EAAYt6B,CAAM,EACtCoqB,EAAIgE,GAAUhE,EAAG5pB,EAAO+5B,CAAU,EAClC,MACF,IAAK,KACH1Q,EAAIuE,GAAUvE,EAAGrpB,EAAO85B,CAAS,EACjClQ,EAAIgE,GAAUhE,EAAGpqB,EAAQu6B,CAAU,EACnC,MACF,IAAK,KACH1Q,EAAIuE,GAAUvE,EAAG7pB,EAAQs6B,CAAS,EAClClQ,EAAIgE,GAAUhE,EAAG,EAAGmQ,EAAa/5B,CAAK,EACtC,KACH,CAEH,KAAK,EAAIqpB,GAAKyQ,EACd,KAAK,EAAIlQ,GAAKmQ,EACd,KAAM,CAACwZ,EAAIC,CAAE,EAAI,KAAK,mBAAkB,EACxCnqB,GAAKkqB,EACL3pB,GAAK4pB,EACLxZ,EAAM,KAAO,IAAI,IAAM3Q,GAAG,QAAQ,CAAC,CAAC,IACpC2Q,EAAM,IAAM,IAAI,IAAMpQ,GAAG,QAAQ,CAAC,CAAC,IACnC,KAAK,UAAS,CACf,CAaD,wBAAwBP,EAAGO,EAAG,OAC5B,OAAO4K,EAAAjC,EAAAyd,GAAiB0D,GAAAC,IAAjB,KAAAphB,EAA8BlJ,EAAGO,EAAG,KAAK,eACjD,CACD,wBAAwBP,EAAGO,EAAG,OAC5B,OAAO4K,EAAAjC,EAAAyd,GAAiB0D,GAAAC,IAAjB,KAAAphB,EAA8BlJ,EAAGO,EAAG,IAAM,KAAK,eACvD,CAmBD,IAAI,aAAc,CAChB,OAAO,KAAK,WAAW,eAAe,SACvC,CACD,IAAI,gBAAiB,CACnB,OAAQ,KAAK,WAAW,eAAe,SAAW,KAAK,cAAgB,GACxE,CACD,IAAI,kBAAmB,CACrB,KAAM,CACJ,YAAAgqB,EACA,eAAgB,CAAC9Z,EAAWC,CAAU,CACvC,EAAG,KACJ,MAAO,CAACD,EAAY8Z,EAAa7Z,EAAa6Z,CAAW,CAC1D,CACD,QAAQ5zC,EAAOR,EAAQ,CACrB,KAAM,CAACirC,EAAaC,CAAY,EAAI,KAAK,iBACnC,CACJ,MAAA1Q,CACN,EAAQ,KAAK,IACTA,EAAM,MAAQ,IAAI,IAAMh6B,EAAQyqC,GAAa,QAAQ,CAAC,CAAC,IAClDrS,EAAA,KAAKqZ,MACRzX,EAAM,OAAS,IAAI,IAAMx6B,EAASkrC,GAAc,QAAQ,CAAC,CAAC,IAE7D,CACD,SAAU,CACR,KAAM,CACJ,MAAA1Q,CACN,EAAQ,KAAK,IACH,CACJ,OAAAx6B,EACA,MAAAQ,CACD,EAAGg6B,EACE6Z,EAAe7zC,EAAM,SAAS,GAAG,EACjC8zC,EAAgB,CAAC1b,EAAA,KAAKqZ,KAAoBjyC,EAAO,SAAS,GAAG,EACnE,GAAIq0C,GAAgBC,EAClB,OAEF,KAAM,CAACrJ,EAAaC,CAAY,EAAI,KAAK,iBACpCmJ,IACH7Z,EAAM,MAAQ,IAAI,IAAM,WAAWh6B,CAAK,EAAIyqC,GAAa,QAAQ,CAAC,CAAC,KAEjE,CAACrS,EAAA,KAAKqZ,KAAoB,CAACqC,IAC7B9Z,EAAM,OAAS,IAAI,IAAM,WAAWx6B,CAAM,EAAIkrC,GAAc,QAAQ,CAAC,CAAC,IAEzE,CACD,uBAAwB,CACtB,MAAO,CAAC,EAAG,CAAC,CACb,CAsFD,YAAa,CAAE,CAyBf,OAAO,OAAOrhB,EAAG,CACf,OAAO,KAAK,MAAMA,EAAI,GAAK,EAAI,GAChC,CAuGD,aAAc,CAAE,CAChB,eAAgB,QACdkJ,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,QAChB,CACD,MAAM,gBAAiB,CACrB,OAAI,KAAK,cAAgB6F,EAAA,KAAK8Z,IACrB,KAAK,cAEd,KAAK,aAAe,IAAItV,GAAc,IAAI,EAC1C,KAAK,IAAI,OAAO,KAAK,aAAa,OAAM,CAAE,EACtCxE,EAAA,KAAKkD,KACP,MAAM,KAAK,aAAa,WAAWlD,EAAA,KAAKkD,GAAQ,EAE3C,KAAK,aACb,CACD,mBAAoB,OACb,KAAK,eAGV,KAAK,aAAa,SAClB,KAAK,aAAe,MACpB/I,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,UAChB,CACD,aAAakO,EAAW,OACtB,MAAMsT,GAAiBxhB,EAAA,KAAK,eAAL,YAAAA,EAAmB,IACtCwhB,EACFA,EAAe,OAAOtT,CAAS,EAE/B,KAAK,IAAI,OAAOA,CAAS,CAE5B,CACD,qBAAsB,CACpB,OAAO,KAAK,IAAI,uBACjB,CACD,MAAM,kBAAmB,CACnBrI,EAAA,KAAKkD,MAGT4R,GAAQ,WAAW8C,GAAiB,KAAK,EACzC1X,EAAA,KAAKgD,GAAW,IAAI4R,GAAQ,IAAI,GAC5B9U,EAAA,KAAKgZ,MACPhZ,EAAA,KAAKkD,IAAS,KAAOlD,EAAA,KAAKgZ,IAC1B9Y,EAAA,KAAK8Y,GAAqB,OAE5B,MAAM,KAAK,iBACZ,CACD,IAAI,aAAc,OAChB,OAAO7e,EAAA6F,EAAA,KAAKkD,MAAL,YAAA/I,EAAe,IACvB,CACD,IAAI,YAAYn3B,EAAM,CACfg9B,EAAA,KAAKkD,MAGVlD,EAAA,KAAKkD,IAAS,KAAOlgC,EACtB,CACD,IAAI,gBAAiB,OACnB,OAAOm3B,EAAA6F,EAAA,KAAKkD,MAAL,YAAA/I,EAAe,WACvB,CACD,MAAM,kBAAkBppB,EAAM,OAC5B,OAAMopB,EAAA6F,EAAA,KAAKkD,MAAL,YAAA/I,EAAe,eAAeppB,GACrC,CACD,iBAAiByjC,EAAc,OAC7B,OAAOra,EAAA6F,EAAA,KAAKkD,MAAL,YAAA/I,EAAe,UAAUqa,EACjC,CACD,YAAa,CACX,MAAO,CAAC,CAACxU,EAAA,KAAKkD,KAAY,CAAClD,EAAA,KAAKkD,IAAS,SAC1C,CACD,gBAAiB,OACf,QAAO/I,EAAA6F,EAAA,KAAKkD,MAAL,YAAA/I,EAAe,YAAa,EACpC,CACD,QAAS,OACP,MAAMmH,EAAM,KAAK,IAAM,SAAS,cAAc,KAAK,EACnDA,EAAI,aAAa,wBAAyB,IAAM,KAAK,UAAY,GAAG,EACpEA,EAAI,UAAY,KAAK,KACrBA,EAAI,aAAa,KAAM,KAAK,EAAE,EAC9BA,EAAI,SAAWtB,EAAA,KAAKkZ,IAAY,GAAK,EACrC5X,EAAI,aAAa,OAAQ,aAAa,EAClC,KAAK,eACPA,EAAI,aAAa,eAAgB,KAAK,aAAa,EAEhD,KAAK,YACRA,EAAI,UAAU,IAAI,QAAQ,EAE5B,KAAK,gBAAe,EACpBlF,EAAA,KAAKsc,GAAAkD,IAAL,WACA,KAAM,CAACvJ,EAAaC,CAAY,EAAI,KAAK,iBACrC,KAAK,eAAiB,MAAQ,IAChChR,EAAI,MAAM,SAAW,IAAI,IAAMgR,EAAeD,GAAa,QAAQ,CAAC,CAAC,IACrE/Q,EAAI,MAAM,UAAY,IAAI,IAAM+Q,EAAcC,GAAc,QAAQ,CAAC,CAAC,KAExE,KAAM,CAACH,EAAIC,CAAE,EAAI,KAAK,sBAAqB,EAC3C,YAAK,UAAUD,EAAIC,CAAE,EACrB7M,GAAW,KAAMjE,EAAK,CAAC,UAAW,aAAa,CAAC,EAC5C,KAAK,aAAe,KAAK,WAAW,uBACtCtB,EAAA,KAAKoa,KAALla,EAAA,KAAKka,GAAkB,IAAI9jB,GAAa,CACtC,UAAWgL,EACX,mBAAoB,IAAM,CAAC,KAAK,WAChC,aAAclF,EAAA,KAAKic,GAAAwD,IAAyB,KAAK,IAAI,EACrD,WAAYzf,EAAA,KAAKkc,GAAAwD,IAAoB,KAAK,IAAI,EAC9C,WAAY1f,EAAA,KAAKmc,GAAAwD,IAAuB,KAAK,IAAI,EACjD,OAAQ,KAAK,WAAW,OAChC,CAAO,KAEH5hB,EAAA,KAAK,WAAW,iBAAhB,MAAAA,EAAgC,OACzBmH,CACR,CAkDD,YAAYr8B,EAAO,CACjB,KAAM,CACJ,MAAA0iC,CACN,EAAQvS,GAAiB,SACrB,GAAInwB,EAAM,SAAW,GAAKA,EAAM,SAAW0iC,EAAO,CAChD1iC,EAAM,eAAc,EACpB,MACD,CAED,GADAi7B,EAAA,KAAKyZ,GAAkB,IACnB,KAAK,aAAc,CACrBvd,EAAA,KAAKqc,GAAAuD,IAAL,UAAuB/2C,GACvB,MACD,CACDm3B,EAAA,KAAKoc,GAAAyD,IAAL,UAA2Bh3C,EAC5B,CACD,IAAI,YAAa,CACf,OAAO,KAAK,WAAW,WAAW,IAAI,CACvC,CAmFD,kBAAmB,CAAE,CACrB,iBAAkB,CAAE,CACpB,WAAY,CACN+6B,EAAA,KAAKga,KACP,aAAaha,EAAA,KAAKga,GAAiB,EAErC9Z,EAAA,KAAK8Z,GAAoB,WAAW,IAAM,OACxC9Z,EAAA,KAAK8Z,GAAoB,OACzB7f,EAAA,KAAK,SAAL,MAAAA,EAAa,gBAAgB,KAC9B,EAAE,CAAC,EACL,CACD,sBAAsB2K,EAAQ7T,EAAGO,EAAG,CAClCsT,EAAO,aAAa,IAAI,EACxB,KAAK,EAAI7T,EACT,KAAK,EAAIO,EACT,KAAK,kBAAiB,EACtB,KAAK,cAAa,CACnB,CACD,QAAQ2gB,EAAIC,EAAIhU,EAAW,KAAK,SAAU,CACxC,MAAMD,EAAQ,KAAK,YACb,CAACuD,EAAWC,CAAU,EAAI,KAAK,eAC/B,CAAC4Y,EAAOC,CAAK,EAAI,KAAK,gBACtB0B,EAAS/J,EAAKhU,EACdge,EAAS/J,EAAKjU,EACdlN,EAAI,KAAK,EAAIyQ,EACblQ,EAAI,KAAK,EAAImQ,EACb/5B,EAAQ,KAAK,MAAQ85B,EACrBt6B,EAAS,KAAK,OAASu6B,EAC7B,OAAQvD,EAAQ,CACd,IAAK,GACH,MAAO,CAACnN,EAAIirB,EAAS3B,EAAO5Y,EAAanQ,EAAI2qB,EAAS/0C,EAASozC,EAAOvpB,EAAIirB,EAASt0C,EAAQ2yC,EAAO5Y,EAAanQ,EAAI2qB,EAAS3B,CAAK,EACnI,IAAK,IACH,MAAO,CAACvpB,EAAIkrB,EAAS5B,EAAO5Y,EAAanQ,EAAI0qB,EAAS1B,EAAOvpB,EAAIkrB,EAAS/0C,EAASmzC,EAAO5Y,EAAanQ,EAAI0qB,EAASt0C,EAAQ4yC,CAAK,EACnI,IAAK,KACH,MAAO,CAACvpB,EAAIirB,EAASt0C,EAAQ2yC,EAAO5Y,EAAanQ,EAAI2qB,EAAS3B,EAAOvpB,EAAIirB,EAAS3B,EAAO5Y,EAAanQ,EAAI2qB,EAAS/0C,EAASozC,CAAK,EACnI,IAAK,KACH,MAAO,CAACvpB,EAAIkrB,EAAS/0C,EAASmzC,EAAO5Y,EAAanQ,EAAI0qB,EAASt0C,EAAQ4yC,EAAOvpB,EAAIkrB,EAAS5B,EAAO5Y,EAAanQ,EAAI0qB,EAAS1B,CAAK,EACnI,QACE,MAAM,IAAI,MAAM,kBAAkB,CACrC,CACF,CACD,uBAAuBnf,EAAMsG,EAAY,CACvC,KAAM,CAAC7F,EAAIC,EAAIC,EAAIC,CAAE,EAAIZ,EACnBzzB,EAAQo0B,EAAKF,EACb10B,EAAS60B,EAAKF,EACpB,OAAQ,KAAK,SAAQ,CACnB,IAAK,GACH,MAAO,CAACD,EAAI6F,EAAa1F,EAAIr0B,EAAOR,CAAM,EAC5C,IAAK,IACH,MAAO,CAAC00B,EAAI6F,EAAa5F,EAAI30B,EAAQQ,CAAK,EAC5C,IAAK,KACH,MAAO,CAACo0B,EAAI2F,EAAa5F,EAAIn0B,EAAOR,CAAM,EAC5C,IAAK,KACH,MAAO,CAAC40B,EAAI2F,EAAa1F,EAAI70B,EAAQQ,CAAK,EAC5C,QACE,MAAM,IAAI,MAAM,kBAAkB,CACrC,CACF,CACD,UAAUw0C,EAAO,CAAE,CACnB,SAAU,CACR,MAAO,EACR,CACD,gBAAiB,CACflc,EAAA,KAAK4Z,GAAgB,GACtB,CACD,iBAAkB,CAChB5Z,EAAA,KAAK4Z,GAAgB,GACtB,CACD,cAAe,CACb,OAAO9Z,EAAA,KAAK8Z,GACb,CACD,yBAA0B,CACxB,OAAO9Z,EAAA,KAAK+Z,GACb,CACD,kBAAmB,CACjB,OAAO,KAAK,KAAO,CAAC,KAAK,eAC1B,CACD,IAAI,YAAa,CACf,KAAM,CACJ,IAAA5yC,EACA,KAAA8L,EACA,OAAAopC,EACA,MAAAC,CACN,EAAQ,KAAK,sBACH,CACJ,YAAAC,EACA,WAAAC,CACD,EAAG,OACJ,OAAOvpC,EAAOupC,GAAcF,EAAQ,GAAKn1C,EAAMo1C,GAAeF,EAAS,CACxE,CAcD,SAAU,CACRjgB,EAAA,KAAKsc,GAAAkD,IAAL,UACD,CACD,OAAOa,EAAQ,CAAE,CACjB,QAAS,CAAE,CACX,kBAAmB,OACjB,MAAO,CACL,GAAI,KAAK,oBACT,QAAS,GACT,UAAW,KAAK,UAChB,WAAUtiB,EAAA,KAAK,eAAL,YAAAA,EAAmB,WAAY,EAC/C,CACG,CACD,UAAUqa,EAAe,GAAOhmC,EAAU,KAAM,CAC9C8pB,GAAY,gCAAgC,CAC7C,CACD,aAAa,YAAYt1B,EAAM8hC,EAAQJ,EAAW,CAChD,MAAMlC,EAAS,IAAI,KAAK,UAAU,YAAY,CAC5C,OAAAsC,EACA,GAAIA,EAAO,UAAW,EACtB,UAAAJ,CACN,CAAK,EACDlC,EAAO,SAAWx/B,EAAK,SACvBk9B,EAAAsC,EAAOwW,GAAqBh2C,EAAK,mBACjCw/B,EAAO,QAAUx/B,EAAK,QAAU,GAChC,KAAM,CAAC0+B,EAAWC,CAAU,EAAIa,EAAO,eACjC,CAACvR,EAAGO,EAAG5pB,EAAOR,CAAM,EAAIo7B,EAAO,uBAAuBx/B,EAAK,KAAM2+B,CAAU,EACjF,OAAAa,EAAO,EAAIvR,EAAIyQ,EACfc,EAAO,EAAIhR,EAAImQ,EACfa,EAAO,MAAQ56B,EAAQ85B,EACvBc,EAAO,OAASp7B,EAASu6B,EAClBa,CACR,CACD,IAAI,iBAAkB,CACpB,MAAO,CAAC,CAAC,KAAK,sBAAwB,KAAK,SAAW,KAAK,cAAgB,KAC5E,CACD,QAAS,SAiBP,IAhBArI,EAAA6F,EAAA,KAAKyZ,MAAL,MAAAtf,EAAe,QACf+F,EAAA,KAAKuZ,GAAW,MACX,KAAK,WACR,KAAK,OAAM,EAET,KAAK,OACP,KAAK,OAAO,OAAO,IAAI,EAEvB,KAAK,WAAW,aAAa,IAAI,EAE/BzZ,EAAA,KAAKga,MACP,aAAaha,EAAA,KAAKga,GAAiB,EACnC9Z,EAAA,KAAK8Z,GAAoB,OAE3B5d,EAAA,KAAK2c,GAAAgC,IAAL,WACA,KAAK,kBAAiB,EAClB/a,EAAA,KAAKma,IAAoB,CAC3B,UAAWx2B,KAAWqc,EAAA,KAAKma,IAAmB,OAAM,EAClD,aAAax2B,CAAO,EAEtBuc,EAAA,KAAKia,GAAqB,KAC3B,CACD,KAAK,OAAS,MACdjgB,EAAA8F,EAAA,KAAKoa,MAAL,MAAAlgB,EAAoB,UACpBgG,EAAA,KAAKka,GAAgB,KACtB,CACD,IAAI,aAAc,CAChB,MAAO,EACR,CACD,eAAgB,CACV,KAAK,cACPhe,EAAA,KAAK4b,GAAA0E,IAAL,WACA1c,EAAA,KAAKsZ,IAAa,UAAU,OAAO,QAAQ,EAE9C,CACD,IAAI,iBAAkB,CACpB,OAAO,IACR,CACD,QAAQr0C,EAAO,CACb,GAAI,CAAC,KAAK,aAAeA,EAAM,SAAW,KAAK,KAAOA,EAAM,MAAQ,QAClE,OAEF,KAAK,WAAW,YAAY,IAAI,EAChCi7B,EAAA,KAAKsZ,GAAmB,CACtB,OAAQ,KAAK,EACb,OAAQ,KAAK,EACb,WAAY,KAAK,MACjB,YAAa,KAAK,MACxB,GACI,MAAMtqB,EAAW8Q,EAAA,KAAKsZ,IAAa,SACnC,GAAI,CAACtZ,EAAA,KAAKiZ,IAAiB,CACzB/Y,EAAA,KAAK+Y,GAAkB,MAAM,KAAK/pB,CAAQ,GAC1C,MAAMytB,EAAsBvgB,EAAA,KAAKuc,GAAAiE,IAAgB,KAAK,IAAI,EACpDC,EAAmBzgB,EAAA,KAAKwc,GAAAkE,IAAa,KAAK,IAAI,EAC9CxZ,EAAS,KAAK,WAAW,QAC/B,UAAWhC,KAAOtB,EAAA,KAAKiZ,IAAiB,CACtC,MAAM/mC,EAAOovB,EAAI,aAAa,mBAAmB,EACjDA,EAAI,aAAa,OAAQ,YAAY,EACrCA,EAAI,iBAAiB,UAAWqb,EAAqB,CACnD,OAAArZ,CACV,CAAS,EACDhC,EAAI,iBAAiB,OAAQub,EAAkB,CAC7C,OAAAvZ,CACV,CAAS,EACDhC,EAAI,iBAAiB,QAASlF,EAAA,KAAKyc,GAAAkE,IAAc,KAAK,KAAM7qC,CAAI,EAAG,CACjE,OAAAoxB,CACV,CAAS,EACDhC,EAAI,aAAa,eAAgBsW,GAAiB,aAAa1lC,CAAI,CAAC,CACrE,CACF,CACD,MAAM+oB,EAAQ+E,EAAA,KAAKiZ,IAAgB,CAAC,EACpC,IAAI+D,EAAgB,EACpB,UAAW1b,KAAOpS,EAAU,CAC1B,GAAIoS,IAAQrG,EACV,MAEF+hB,GACD,CACD,MAAMC,GAAqB,IAAM,KAAK,SAAW,KAAK,gBAAkB,IAAM,IAAMjd,EAAA,KAAKiZ,IAAgB,OAAS,GAClH,GAAIgE,IAAsBD,EAAe,CACvC,GAAIC,EAAoBD,EACtB,QAASt3C,EAAI,EAAGA,EAAIs3C,EAAgBC,EAAmBv3C,IACrDs6B,EAAA,KAAKsZ,IAAa,OAAOtZ,EAAA,KAAKsZ,IAAa,UAAU,UAE9C2D,EAAoBD,EAC7B,QAASt3C,EAAI,EAAGA,EAAIu3C,EAAoBD,EAAet3C,IACrDs6B,EAAA,KAAKsZ,IAAa,WAAW,OAAOtZ,EAAA,KAAKsZ,IAAa,SAAS,EAGnE,IAAI5zC,EAAI,EACR,UAAWw3C,KAAShuB,EAAU,CAE5B,MAAMhd,EADM8tB,EAAA,KAAKiZ,IAAgBvzC,GAAG,EACnB,aAAa,mBAAmB,EACjDw3C,EAAM,aAAa,eAAgBtF,GAAiB,aAAa1lC,CAAI,CAAC,CACvE,CACF,CACDkqB,EAAA,KAAK0c,GAAAqE,IAAL,UAAyB,GACzBjd,EAAA,KAAK6Z,GAA+B,IACpC/Z,EAAA,KAAKsZ,IAAa,WAAW,MAAM,CACjC,aAAc,EACpB,CAAK,EACDr0C,EAAM,eAAc,EACpBA,EAAM,yBAAwB,CAC/B,CAoBD,oBAAoBgsB,EAAGO,EAAG,CACnBwO,EAAA,KAAK+Z,KAGV3d,EAAA,KAAKgc,GAAAgF,IAAL,UAAyBpd,EAAA,KAAK0Z,IAAqB,CACjD,OAAQzoB,EACR,OAAQO,EACR,aAAc,EACpB,EACG,CAMD,2BAA4B,CAC1B4K,EAAA,KAAK2c,GAAAgC,IAAL,WACA,KAAK,IAAI,OACV,CACD,QAAS,WAGP,GAFA,KAAK,cAAa,GAClB5gB,EAAA,KAAK,MAAL,MAAAA,EAAU,UAAU,IAAI,kBACpB,CAAC,KAAK,aAAc,CACtB,KAAK,iBAAiB,KAAK,IAAM,UAC3BA,EAAA,KAAK,MAAL,MAAAA,EAAU,UAAU,SAAS,qBAC/BD,EAAA,KAAK,eAAL,MAAAA,EAAmB,OAE7B,CAAO,EACD,MACD,EACDA,EAAA,KAAK,eAAL,MAAAA,EAAmB,QACnB6T,EAAA/N,EAAA,KAAKkD,MAAL,MAAA6K,EAAe,mBAAmB,GACnC,CACD,UAAW,gBACT5T,EAAA6F,EAAA,KAAKsZ,MAAL,MAAAnf,EAAmB,UAAU,IAAI,WACjCD,EAAA,KAAK,MAAL,MAAAA,EAAU,UAAU,OAAO,mBACvB6T,EAAA,KAAK,MAAL,MAAAA,EAAU,SAAS,SAAS,gBAC9B,KAAK,WAAW,aAAa,IAAI,MAAM,CACrC,cAAe,EACvB,CAAO,GAEHC,EAAA,KAAK,eAAL,MAAAA,EAAmB,QACnBC,EAAAjO,EAAA,KAAKkD,MAAL,MAAA+K,EAAe,mBAAmB,GACnC,CACD,aAAar+B,EAAMzB,EAAO,CAAE,CAC5B,gBAAiB,CAAE,CACnB,eAAgB,CAAE,CAClB,iBAAkB,CAAE,CACpB,sBAAuB,CACrB,OAAO,KAAK,GACb,CACD,IAAI,YAAa,CACf,OAAO,KAAK,GACb,CACD,IAAI,WAAY,CACd,OAAO6xB,EAAA,KAAK6Z,GACb,CACD,IAAI,UAAU1rC,EAAO,CACnB+xB,EAAA,KAAK2Z,GAAa1rC,GACb,KAAK,SAGNA,GACF,KAAK,OAAO,YAAY,IAAI,EAC5B,KAAK,OAAO,gBAAgB,IAAI,GAEhC,KAAK,OAAO,gBAAgB,IAAI,EAEnC,CACD,eAAevG,EAAOR,EAAQ,CAC5B84B,EAAA,KAAKmZ,GAAmB,IACxB,MAAMgE,EAAcz1C,EAAQR,EACtB,CACJ,MAAAw6B,CACN,EAAQ,KAAK,IACTA,EAAM,YAAcyb,EACpBzb,EAAM,OAAS,MAChB,CACD,WAAW,UAAW,CACpB,MAAO,GACR,CACD,OAAO,yBAA0B,CAC/B,MAAO,EACR,CACD,IAAI,sBAAuB,CACzB,MAAO,CACL,OAAQ,OACd,CACG,CACD,IAAI,oBAAqB,CACvB,OAAO,IACR,CACD,iBAAiB5+B,EAAMkuC,EAAW,GAAO,CACvC,GAAIA,EAAU,CACZlR,EAAA,KAAKma,KAALja,EAAA,KAAKia,GAAuB,IAAI,KAChC,KAAM,CACJ,OAAA75B,CACD,EAAGtd,EACJ,IAAI2gB,EAAUqc,EAAA,KAAKma,IAAmB,IAAI75B,CAAM,EAC5CqD,GACF,aAAaA,CAAO,EAEtBA,EAAU,WAAW,IAAM,CACzB,KAAK,iBAAiB3gB,CAAI,EAC1Bg9B,EAAA,KAAKma,IAAmB,OAAO75B,CAAM,EACjC0f,EAAA,KAAKma,IAAmB,OAAS,GACnCja,EAAA,KAAKia,GAAqB,KAEpC,EAASvC,GAAiB,iBAAiB,EACrC5X,EAAA,KAAKma,IAAmB,IAAI75B,EAAQqD,CAAO,EAC3C,MACD,CACD3gB,EAAK,OAALA,EAAK,KAAS,KAAK,YACnB,KAAK,WAAW,UAAU,SAAS,kBAAmB,CACpD,OAAQ,KACR,QAAS,CACP,KAAM,UACN,KAAAA,CACD,CACP,CAAK,CACF,CACD,KAAKqE,EAAU,KAAK,WAAY,CAC9B,KAAK,IAAI,UAAU,OAAO,SAAU,CAACA,CAAO,EAC5C,KAAK,WAAaA,CACnB,CACD,QAAS,CACH,KAAK,MACP,KAAK,IAAI,SAAW,GAEtB64B,EAAA,KAAKgZ,GAAY,GAClB,CACD,SAAU,CACJ,KAAK,MACP,KAAK,IAAI,SAAW,IAEtBhZ,EAAA,KAAKgZ,GAAY,GAClB,CACD,wBAAwBzG,EAAY,CAClC,IAAI6K,EAAU7K,EAAW,UAAU,cAAc,oBAAoB,EACrE,GAAI,CAAC6K,EACHA,EAAU,SAAS,cAAc,KAAK,EACtCA,EAAQ,UAAU,IAAI,oBAAqB,KAAK,UAAU,EAC1D7K,EAAW,UAAU,QAAQ6K,CAAO,UAC3BA,EAAQ,WAAa,SAAU,CACxC,MAAMt3C,EAASs3C,EACfA,EAAU,SAAS,cAAc,KAAK,EACtCA,EAAQ,UAAU,IAAI,oBAAqB,KAAK,UAAU,EAC1Dt3C,EAAO,OAAOs3C,CAAO,CACtB,CACD,OAAOA,CACR,CACD,uBAAuB7K,EAAY,CACjC,KAAM,CACJ,WAAA8K,CACN,EAAQ9K,EAAW,WACX8K,GAAA,YAAAA,EAAY,YAAa,OAASA,EAAW,UAAU,SAAS,mBAAmB,GACrFA,EAAW,OAAM,CAEpB,CACH,EAr0CEvE,GAAA,YACAC,GAAA,YACA/V,GAAA,YACAgW,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YAUAC,GAAA,YACAC,GAAA,YAoNAxC,GAAA,YAAAoD,GAAU,SAAC,CAACtzC,EAAOR,CAAM,EAAG6pB,EAAGO,EAAG,CAChC,CAACP,EAAGO,CAAC,EAAI,KAAK,wBAAwBP,EAAGO,CAAC,EAC1C,KAAK,GAAKP,EAAIrpB,EACd,KAAK,GAAK4pB,EAAIpqB,EACd,KAAK,eAAe,KAAK,EAAG,KAAK,CAAC,EAClC,KAAK,kBAAiB,CACvB,EA4HMk0C,GAAA,YAAAC,GAAY,SAACtqB,EAAGO,EAAGgsB,EAAO,CAC/B,OAAQA,EAAK,CACX,IAAK,IACH,MAAO,CAAChsB,EAAG,CAACP,CAAC,EACf,IAAK,KACH,MAAO,CAAC,CAACA,EAAG,CAACO,CAAC,EAChB,IAAK,KACH,MAAO,CAAC,CAACA,EAAGP,CAAC,EACf,QACE,MAAO,CAACA,EAAGO,CAAC,CACf,CACF,EAODumB,GAAA,YAAA0F,GAAkB,SAACrf,EAAU,CAC3B,OAAQA,EAAQ,CACd,IAAK,IACH,CACE,KAAM,CAACsD,EAAWC,CAAU,EAAI,KAAK,eACrC,MAAO,CAAC,EAAG,CAACD,EAAYC,EAAYA,EAAaD,EAAW,CAAC,CAC9D,CACH,IAAK,KACH,MAAO,CAAC,GAAI,EAAG,EAAG,EAAE,EACtB,IAAK,KACH,CACE,KAAM,CAACA,EAAWC,CAAU,EAAI,KAAK,eACrC,MAAO,CAAC,EAAGD,EAAYC,EAAY,CAACA,EAAaD,EAAW,CAAC,CAC9D,CACH,QACE,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,CACrB,CACF,EAgDDsW,GAAA,YAAA0E,GAAe,UAAG,CAChB,GAAI1c,EAAA,KAAKsZ,IACP,OAEFpZ,EAAA,KAAKoZ,GAAe,SAAS,cAAc,KAAK,GAChDtZ,EAAA,KAAKsZ,IAAa,UAAU,IAAI,UAAU,EAC1C,MAAMoE,EAAU,KAAK,qBAAuB,CAAC,UAAW,WAAY,cAAe,YAAY,EAAI,CAAC,UAAW,YAAa,WAAY,cAAe,cAAe,eAAgB,aAAc,YAAY,EAC1Mpa,EAAS,KAAK,WAAW,QAC/B,UAAWpxB,KAAQwrC,EAAS,CAC1B,MAAMpc,EAAM,SAAS,cAAc,KAAK,EACxCtB,EAAA,KAAKsZ,IAAa,OAAOhY,CAAG,EAC5BA,EAAI,UAAU,IAAI,UAAWpvB,CAAI,EACjCovB,EAAI,aAAa,oBAAqBpvB,CAAI,EAC1CovB,EAAI,iBAAiB,cAAelF,EAAA,KAAK6b,GAAA0F,IAAoB,KAAK,KAAMzrC,CAAI,EAAG,CAC7E,OAAAoxB,CACR,CAAO,EACDhC,EAAI,iBAAiB,cAAelK,GAAe,CACjD,OAAAkM,CACR,CAAO,EACDhC,EAAI,SAAW,EAChB,CACD,KAAK,IAAI,QAAQtB,EAAA,KAAKsZ,GAAY,CACnC,EACDrB,GAAA,YAAA0F,GAAmB,SAACzrC,EAAMjN,EAAO,OAC/BA,EAAM,eAAc,EACpB,KAAM,CACJ,MAAA0iC,CACN,EAAQvS,GAAiB,SACrB,GAAInwB,EAAM,SAAW,GAAKA,EAAM,SAAW0iC,EACzC,QAEFxN,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,OAAO,IACtB,MAAMyjB,EAAiB,KAAK,aAC5B,KAAK,aAAe,GACpB1d,EAAA,KAAKqZ,GAAqB,CAACt0C,EAAM,QAASA,EAAM,OAAO,GACvD,MAAMopC,EAAK,IAAI,gBACT/K,EAAS,KAAK,WAAW,eAAe+K,CAAE,EAChD,KAAK,OAAO,oBAAoB,EAAK,EACrC,OAAO,iBAAiB,cAAejS,EAAA,KAAKgc,GAAAgF,IAAoB,KAAK,KAAMlrC,CAAI,EAAG,CAChF,QAAS,GACT,QAAS,GACT,OAAAoxB,CACN,CAAK,EACD,OAAO,iBAAiB,YAAa9L,GAAW,CAC9C,QAAS,GACT,OAAA8L,CACN,CAAK,EACD,OAAO,iBAAiB,cAAelM,GAAe,CACpD,OAAAkM,CACN,CAAK,EACDpD,EAAA,KAAKsZ,GAAmB,CACtB,OAAQ,KAAK,EACb,OAAQ,KAAK,EACb,WAAY,KAAK,MACjB,YAAa,KAAK,MACxB,GACI,MAAMqE,EAAoB,KAAK,OAAO,IAAI,MAAM,OAC1CC,EAAc,KAAK,IAAI,MAAM,OACnC,KAAK,IAAI,MAAM,OAAS,KAAK,OAAO,IAAI,MAAM,OAAS,OAAO,iBAAiB74C,EAAM,MAAM,EAAE,OAC7F,MAAM84C,EAAoB,IAAM,OAC9B1P,EAAG,MAAK,EACR,KAAK,OAAO,oBAAoB,EAAI,GACpClU,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,OAAO,IACtB,KAAK,aAAeyjB,EACpB,KAAK,OAAO,IAAI,MAAM,OAASC,EAC/B,KAAK,IAAI,MAAM,OAASC,EACxB1hB,EAAA,KAAK+b,GAAA6F,IAAL,UACN,EACI,OAAO,iBAAiB,YAAaD,EAAmB,CACtD,OAAAza,CACN,CAAK,EACD,OAAO,iBAAiB,OAAQya,EAAmB,CACjD,OAAAza,CACN,CAAK,CACF,EACD4U,GAAA,YAAA+F,GAAO,SAAChtB,EAAGO,EAAG5pB,EAAOR,EAAQ,CAC3B,KAAK,MAAQQ,EACb,KAAK,OAASR,EACd,KAAK,EAAI6pB,EACT,KAAK,EAAIO,EACT,KAAM,CAAC6gB,EAAaC,CAAY,EAAI,KAAK,iBACzC,KAAK,QAAQD,EAAczqC,EAAO0qC,EAAelrC,CAAM,EACvD,KAAK,kBAAiB,EACtB,KAAK,WAAU,CAChB,EAED+wC,GAAA,YAAA6F,GAAqB,UAAG,CACtB,GAAI,CAAChe,EAAA,KAAKwZ,IACR,OAEF,KAAM,CACJ,OAAAxH,EACA,OAAAC,EACA,WAAAiM,EACA,YAAAC,CACN,EAAQne,EAAA,KAAKwZ,IACTtZ,EAAA,KAAKsZ,GAAmB,MACxB,MAAM3H,EAAO,KAAK,EACZC,EAAO,KAAK,EACZsM,EAAW,KAAK,MAChBC,EAAY,KAAK,OACnBxM,IAASG,GAAUF,IAASG,GAAUmM,IAAaF,GAAcG,IAAcF,GAGnF,KAAK,YAAY,CACf,IAAK/hB,EAAA,KAAK8b,GAAA+F,IAAQ,KAAK,KAAMpM,EAAMC,EAAMsM,EAAUC,CAAS,EAC5D,KAAMjiB,EAAA,KAAK8b,GAAA+F,IAAQ,KAAK,KAAMjM,EAAQC,EAAQiM,EAAYC,CAAW,EACrE,SAAU,EAChB,CAAK,CACF,EAID/F,GAAA,YAAAgF,GAAmB,SAAClrC,EAAMjN,EAAO,CAC/B,KAAM,CAACotC,EAAaC,CAAY,EAAI,KAAK,iBACnCN,EAAS,KAAK,EACdC,EAAS,KAAK,EACdiM,EAAa,KAAK,MAClBC,EAAc,KAAK,OACnBG,EAAW1G,GAAiB,SAAWvF,EACvCkM,EAAY3G,GAAiB,SAAWtF,EACxCkM,EAAiBpiB,EAAA,KAAK2b,GAAA0F,IAAL,UAAwB,KAAK,UAC9CgB,EAAS,CAACxtB,EAAGO,IAAM,CAACgtB,EAAe,CAAC,EAAIvtB,EAAIutB,EAAe,CAAC,EAAIhtB,EAAGgtB,EAAe,CAAC,EAAIvtB,EAAIutB,EAAe,CAAC,EAAIhtB,CAAC,EAChHktB,EAAoBtiB,EAAA,KAAK2b,GAAA0F,IAAL,UAAwB,IAAM,KAAK,UACvDkB,EAAY,CAAC1tB,EAAGO,IAAM,CAACktB,EAAkB,CAAC,EAAIztB,EAAIytB,EAAkB,CAAC,EAAIltB,EAAGktB,EAAkB,CAAC,EAAIztB,EAAIytB,EAAkB,CAAC,EAAIltB,CAAC,EACrI,IAAIotB,EACAC,EACAC,EAAa,GACbC,EAAe,GACnB,OAAQ7sC,EAAI,CACV,IAAK,UACH4sC,EAAa,GACbF,EAAW,CAAC5tB,EAAGM,IAAM,CAAC,EAAG,CAAC,EAC1ButB,EAAc,CAAC7tB,EAAGM,IAAM,CAACN,EAAGM,CAAC,EAC7B,MACF,IAAK,YACHstB,EAAW,CAAC5tB,EAAGM,IAAM,CAACN,EAAI,EAAG,CAAC,EAC9B6tB,EAAc,CAAC7tB,EAAGM,IAAM,CAACN,EAAI,EAAGM,CAAC,EACjC,MACF,IAAK,WACHwtB,EAAa,GACbF,EAAW,CAAC5tB,EAAGM,IAAM,CAACN,EAAG,CAAC,EAC1B6tB,EAAc,CAAC7tB,EAAGM,IAAM,CAAC,EAAGA,CAAC,EAC7B,MACF,IAAK,cACHytB,EAAe,GACfH,EAAW,CAAC5tB,EAAGM,IAAM,CAACN,EAAGM,EAAI,CAAC,EAC9ButB,EAAc,CAAC7tB,EAAGM,IAAM,CAAC,EAAGA,EAAI,CAAC,EACjC,MACF,IAAK,cACHwtB,EAAa,GACbF,EAAW,CAAC5tB,EAAGM,IAAM,CAACN,EAAGM,CAAC,EAC1ButB,EAAc,CAAC7tB,EAAGM,IAAM,CAAC,EAAG,CAAC,EAC7B,MACF,IAAK,eACHstB,EAAW,CAAC5tB,EAAGM,IAAM,CAACN,EAAI,EAAGM,CAAC,EAC9ButB,EAAc,CAAC7tB,EAAGM,IAAM,CAACN,EAAI,EAAG,CAAC,EACjC,MACF,IAAK,aACH8tB,EAAa,GACbF,EAAW,CAAC5tB,EAAGM,IAAM,CAAC,EAAGA,CAAC,EAC1ButB,EAAc,CAAC7tB,EAAGM,IAAM,CAACN,EAAG,CAAC,EAC7B,MACF,IAAK,aACH+tB,EAAe,GACfH,EAAW,CAAC5tB,EAAGM,IAAM,CAAC,EAAGA,EAAI,CAAC,EAC9ButB,EAAc,CAAC7tB,EAAGM,IAAM,CAACN,EAAGM,EAAI,CAAC,EACjC,KACH,CACD,MAAM0tB,EAAQJ,EAASV,EAAYC,CAAW,EACxCc,EAAgBJ,EAAYX,EAAYC,CAAW,EACzD,IAAIe,EAAsBT,EAAO,GAAGQ,CAAa,EACjD,MAAME,EAAYvH,GAAiB,OAAO5F,EAASkN,EAAoB,CAAC,CAAC,EACnEE,EAAYxH,GAAiB,OAAO3F,EAASiN,EAAoB,CAAC,CAAC,EACzE,IAAIG,GAAS,EACTC,GAAS,EACTC,GAAQC,GACZ,GAAKv6C,EAAM,cAUR,CACC,OAAAs6C,GACA,OAAAC,EACD,EAAGv6C,OAbmB,CACvB,KAAM,CACJ,QAAAw6C,EACA,QAAAC,CACD,EAAGz6C,EACE,CAAC06C,GAAaC,EAAW,EAAI5f,EAAA,KAAKuZ,IACxC,CAACgG,GAAQC,EAAM,EAAI,KAAK,wBAAwBC,EAAUE,GAAaD,EAAUE,EAAW,EAC5F5f,EAAA,KAAKuZ,IAAmB,CAAC,EAAIkG,EAC7Bzf,EAAA,KAAKuZ,IAAmB,CAAC,EAAImG,CACnC,CAOI,GADA,CAACH,GAAQC,EAAM,EAAIb,EAAUY,GAASlN,EAAamN,GAASlN,CAAY,EACpEwM,EAAY,CACd,MAAMe,EAAU,KAAK,MAAM3B,EAAYC,CAAW,EAClDkB,GAASC,GAAS,KAAK,IAAI,KAAK,IAAI,KAAK,MAAML,EAAc,CAAC,EAAID,EAAM,CAAC,EAAIO,GAAQN,EAAc,CAAC,EAAID,EAAM,CAAC,EAAIQ,EAAM,EAAIK,EAAS,EAAI3B,EAAY,EAAIC,CAAW,EAAGG,EAAWJ,EAAYK,EAAYJ,CAAW,CACvN,MAAUY,EACTM,GAAS,KAAK,IAAIf,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIW,EAAc,CAAC,EAAID,EAAM,CAAC,EAAIO,EAAM,CAAC,CAAC,EAAIrB,EAE3FoB,GAAS,KAAK,IAAIf,EAAW,KAAK,IAAI,EAAG,KAAK,IAAIU,EAAc,CAAC,EAAID,EAAM,CAAC,EAAIQ,EAAM,CAAC,CAAC,EAAIrB,EAE9F,MAAMC,GAAWxG,GAAiB,OAAOsG,EAAamB,EAAM,EACtDhB,EAAYzG,GAAiB,OAAOuG,EAAcmB,EAAM,EAC9DJ,EAAsBT,EAAO,GAAGI,EAAYT,GAAUC,CAAS,CAAC,EAChE,MAAMxM,EAAOsN,EAAYD,EAAoB,CAAC,EACxCpN,EAAOsN,EAAYF,EAAoB,CAAC,EAC9Clf,EAAA,KAAK4Z,KAAL1Z,EAAA,KAAK0Z,GAAiB,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,MAAM,GAC9D,KAAK,MAAQwE,GACb,KAAK,OAASC,EACd,KAAK,EAAIxM,EACT,KAAK,EAAIC,EACT,KAAK,QAAQO,EAAc+L,GAAU9L,EAAe+L,CAAS,EAC7D,KAAK,kBAAiB,EACtB,KAAK,YAAW,CACjB,EA2GDhG,GAAA,YAAAwD,GAAwB,UAAG,OACzB3b,EAAA,KAAKsZ,GAAmB,CACtB,OAAQ,KAAK,EACb,OAAQ,KAAK,EACb,WAAY,KAAK,MACjB,YAAa,KAAK,MACxB,IACIrf,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,OAAO,IACtB,KAAK,OAAO,oBAAoB,EAAK,CACtC,EACDme,GAAA,YAAAwD,GAAmB,SAACgE,EAASC,EAActI,EAAU,CAEnD,IAAIuI,EAAS,IAAkBvI,EAAWsI,GAAgB,EAAI,GAC9D,GAAIC,IAAW,EACb,OAEF,MAAMxB,EAAiBpiB,EAAA,KAAK2b,GAAA0F,IAAL,UAAwB,KAAK,UAC9CgB,EAAS,CAACxtB,EAAGO,IAAM,CAACgtB,EAAe,CAAC,EAAIvtB,EAAIutB,EAAe,CAAC,EAAIhtB,EAAGgtB,EAAe,CAAC,EAAIvtB,EAAIutB,EAAe,CAAC,EAAIhtB,CAAC,EAChH,CAAC6gB,EAAaC,CAAY,EAAI,KAAK,iBACnCN,EAAS,KAAK,EACdC,EAAS,KAAK,EACdiM,EAAa,KAAK,MAClBC,EAAc,KAAK,OACnBG,EAAW1G,GAAiB,SAAWvF,EACvCkM,EAAY3G,GAAiB,SAAWtF,EAC9C0N,EAAS,KAAK,IAAI,KAAK,IAAIA,EAAQ,EAAI9B,EAAY,EAAIC,CAAW,EAAGG,EAAWJ,EAAYK,EAAYJ,CAAW,EACnH,MAAMC,EAAWxG,GAAiB,OAAOsG,EAAa8B,CAAM,EACtD3B,EAAYzG,GAAiB,OAAOuG,EAAc6B,CAAM,EAC9D,GAAI5B,IAAaF,GAAcG,IAAcF,EAC3C,OAEFne,EAAA,KAAK4Z,KAAL1Z,EAAA,KAAK0Z,GAAiB,CAAC5H,EAAQC,EAAQiM,EAAYC,CAAW,GAC9D,MAAM8B,EAAoBxB,EAAOP,EAAa,EAAGC,EAAc,CAAC,EAC1D3f,EAAUoZ,GAAiB,OAAO5F,EAASiO,EAAkB,CAAC,CAAC,EAC/DxhB,EAAUmZ,GAAiB,OAAO3F,EAASgO,EAAkB,CAAC,CAAC,EAC/DC,EAAuBzB,EAAOL,EAAW,EAAGC,EAAY,CAAC,EAC/D,KAAK,EAAI7f,EAAU0hB,EAAqB,CAAC,EACzC,KAAK,EAAIzhB,EAAUyhB,EAAqB,CAAC,EACzC,KAAK,MAAQ9B,EACb,KAAK,OAASC,EACd,KAAK,QAAQhM,EAAc+L,EAAU9L,EAAe+L,CAAS,EAC7D,KAAK,kBAAiB,EACtB,KAAK,YAAW,CACjB,EACD9F,GAAA,YAAAwD,GAAsB,UAAG,QACvB5hB,EAAA6F,EAAA,KAAKkD,MAAL,MAAA/I,EAAe,OAAO,IACtB,KAAK,OAAO,oBAAoB,EAAI,EACpCiC,EAAA,KAAK+b,GAAA6F,IAAL,UACD,EAmBDxF,GAAA,YAAAyD,GAAqB,SAACh3C,EAAO,CAC3B,KAAM,CACJ,MAAA0iC,CACN,EAAQvS,GAAiB,SACjBnwB,EAAM,SAAW,CAAC0iC,GAAS1iC,EAAM,UAAYA,EAAM,SAAW0iC,EAChE,KAAK,OAAO,eAAe,IAAI,EAE/B,KAAK,OAAO,YAAY,IAAI,CAE/B,EACD8Q,GAAA,YAAAuD,GAAiB,SAAC/2C,EAAO,CACvB,KAAM,CACJ,WAAAk7C,CACD,EAAG,KACJ,KAAK,WAAW,mBAChB,IAAIC,EAAqB,GACzB,MAAM/R,EAAK,IAAI,gBACT/K,EAAS,KAAK,WAAW,eAAe+K,CAAE,EAC1C1iB,EAAO,CACX,QAAS,GACT,QAAS,GACT,OAAA2X,CACN,EACU+c,EAAax3C,GAAK,CACtBwlC,EAAG,MAAK,EACRnO,EAAA,KAAKiZ,GAAiB,MACtBjZ,EAAA,KAAKyZ,GAAkB,IAClB,KAAK,WAAW,kBACnBvd,EAAA,KAAKoc,GAAAyD,IAAL,UAA2BpzC,GAEzBu3C,GACF,KAAK,gBAAe,CAE5B,EACQD,IACFjgB,EAAA,KAAK+Z,GAAah1C,EAAM,SACxBi7B,EAAA,KAAKga,GAAaj1C,EAAM,SACxBi7B,EAAA,KAAKiZ,GAAiBl0C,EAAM,WAC5Bi7B,EAAA,KAAKkZ,GAAmBn0C,EAAM,aAC9B,OAAO,iBAAiB,cAAe4D,GAAK,CACrCu3C,IACHA,EAAqB,GACrB,KAAK,iBAAgB,GAEvB,KAAM,CACJ,QAASnvB,EACT,QAASO,EACT,UAAA8uB,CACD,EAAGz3C,EACJ,GAAIy3C,IAActgB,EAAA,KAAKmZ,IAAgB,CACrC3hB,GAAU3uB,CAAC,EACX,MACD,CACD,KAAM,CAACspC,EAAIC,CAAE,EAAI,KAAK,wBAAwBnhB,EAAI+O,EAAA,KAAKia,IAAYzoB,EAAIwO,EAAA,KAAKka,GAAU,EACtFha,EAAA,KAAK+Z,GAAahpB,GAClBiP,EAAA,KAAKga,GAAa1oB,GAClB,KAAK,WAAW,oBAAoB2gB,EAAIC,CAAE,CAC3C,EAAEzmB,CAAI,EACP,OAAO,iBAAiB,YAAa6L,GAAW7L,CAAI,EACpD,OAAO,iBAAiB,cAAe9iB,GAAK,CACtCA,EAAE,cAAgBm3B,EAAA,KAAKoZ,MACrBpZ,EAAA,KAAKoa,KAAiBvxC,EAAE,YAC1Bw3C,EAAWx3C,CAAC,EAGhB2uB,GAAU3uB,CAAC,CACZ,EAAE8iB,CAAI,GAET,MAAMoyB,EAAoBl1C,GAAK,CAC7B,GAAI,CAACm3B,EAAA,KAAKmZ,KAAkBnZ,EAAA,KAAKmZ,MAAmBtwC,EAAE,UAAW,CAC/Dw3C,EAAWx3C,CAAC,EACZ,MACD,CACD2uB,GAAU3uB,CAAC,CACjB,EACI,OAAO,iBAAiB,YAAak1C,EAAmB,CACtD,OAAAza,CACN,CAAK,EACD,OAAO,iBAAiB,OAAQya,EAAmB,CACjD,OAAAza,CACN,CAAK,CACF,EA2FDoV,GAAA,YAAAkD,GAAkB,UAAG,CACnB,GAAI5b,EAAA,KAAKyZ,KAAY,CAAC,KAAK,IACzB,OAEFvZ,EAAA,KAAKuZ,GAAW,IAAI,iBACpB,MAAMnW,EAAS,KAAK,WAAW,eAAetD,EAAA,KAAKyZ,GAAQ,EAC3D,KAAK,IAAI,iBAAiB,UAAW,KAAK,QAAQ,KAAK,IAAI,EAAG,CAC5D,OAAAnW,CACN,CAAK,EACD,KAAK,IAAI,iBAAiB,WAAY,KAAK,SAAS,KAAK,IAAI,EAAG,CAC9D,OAAAA,CACN,CAAK,CACF,EA8IDqV,GAAA,YAAAiE,GAAe,SAAC33C,EAAO,CACrB2yC,GAAiB,wBAAwB,KAAK,KAAM3yC,CAAK,CAC1D,EACD2zC,GAAA,YAAAkE,GAAY,SAAC73C,EAAO,OACd+6B,EAAA,KAAK+Z,OAAgC5f,EAAAl1B,EAAM,gBAAN,YAAAk1B,EAAqB,cAAe6F,EAAA,KAAKsZ,KAChFld,EAAA,KAAK2c,GAAAgC,IAAL,UAEH,EACDlC,GAAA,YAAAkE,GAAa,SAAC7qC,EAAM,CAClBguB,EAAA,KAAKwZ,GAAsB1Z,EAAA,KAAK+Z,IAA+B7nC,EAAO,GACvE,EACD4mC,GAAA,YAAAqE,GAAmB,SAAChvC,EAAO,CACzB,GAAK6xB,EAAA,KAAKiZ,IAGV,UAAW3X,KAAOtB,EAAA,KAAKiZ,IACrB3X,EAAI,SAAWnzB,CAElB,EAWD4qC,GAAA,YAAAgC,GAAa,UAAG,CACd7a,EAAA,KAAK6Z,GAA+B,IACpC3d,EAAA,KAAK0c,GAAAqE,IAAL,UAAyB,IACzB/gB,EAAA,KAAK+b,GAAA6F,IAAL,UACD,EA9zBDjhB,EAvXI6a,GAuXG0D,IAzVP/zC,GA9BIqwC,GA8BG,QAAQ,MACfrwC,GA/BIqwC,GA+BG,eAAe,MAGtBrwC,GAlCIqwC,GAkCG,mBAAmB,IAC1BrwC,GAnCIqwC,GAmCG,gBAAgB,IAAIzP,IAC3B5gC,GApCIqwC,GAoCG,UAAU,GACjBrwC,GArCIqwC,GAqCG,oBAAoB,KArC7B,IAAM2I,GAAN3I,GAu0CA,MAAM+C,WAAmB4F,EAAiB,CACxC,YAAYl1C,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,oBAAsBA,EAAO,oBAClC,KAAK,QAAU,EAChB,CACD,WAAY,CACV,OAAO,KAAK,kBACb,CACH,CAGA,MAAMm1C,GAAO,WACPC,GAAY,WACZC,GAAW,MACjB,MAAMC,EAAe,CACnB,YAAYC,EAAM,CAChB,KAAK,GAAKA,EAAOA,EAAO,WAAaJ,GACrC,KAAK,GAAKI,EAAOA,EAAO,WAAaJ,EACtC,CACD,OAAOzgB,EAAO,CACZ,IAAI/8B,EAAMwC,EACV,GAAI,OAAOu6B,GAAU,SAAU,CAC7B/8B,EAAO,IAAI,WAAW+8B,EAAM,OAAS,CAAC,EACtCv6B,EAAS,EACT,QAASE,EAAI,EAAG05B,EAAKW,EAAM,OAAQr6B,EAAI05B,EAAI15B,IAAK,CAC9C,MAAM4iB,EAAOyX,EAAM,WAAWr6B,CAAC,EAC3B4iB,GAAQ,IACVtlB,EAAKwC,GAAQ,EAAI8iB,GAEjBtlB,EAAKwC,GAAQ,EAAI8iB,IAAS,EAC1BtlB,EAAKwC,GAAQ,EAAI8iB,EAAO,IAE3B,CACF,SAAU,YAAY,OAAOyX,CAAK,EACjC/8B,EAAO+8B,EAAM,QACbv6B,EAASxC,EAAK,eAEd,OAAM,IAAI,MAAM,sDAAsD,EAExE,MAAM69C,EAAcr7C,GAAU,EACxBs7C,EAAat7C,EAASq7C,EAAc,EACpCE,EAAa,IAAI,YAAY/9C,EAAK,OAAQ,EAAG69C,CAAW,EAC9D,IAAIG,EAAK,EACPC,EAAK,EACHC,EAAK,KAAK,GACZC,EAAK,KAAK,GACZ,MAAMC,EAAK,WACTC,EAAK,UACDC,EAASF,EAAKV,GAClBa,EAASF,EAAKX,GAChB,QAASh7C,EAAI,EAAGA,EAAIm7C,EAAan7C,IAC3BA,EAAI,GACNs7C,EAAKD,EAAWr7C,CAAC,EACjBs7C,EAAKA,EAAKI,EAAKX,GAAYO,EAAKM,EAASZ,GACzCM,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKK,EAAKZ,GAAYO,EAAKO,EAASb,GACzCQ,GAAMF,EACNE,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAK,EAAI,aAEdD,EAAKF,EAAWr7C,CAAC,EACjBu7C,EAAKA,EAAKG,EAAKX,GAAYQ,EAAKK,EAASZ,GACzCO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKI,EAAKZ,GAAYQ,EAAKM,EAASb,GACzCS,GAAMF,EACNE,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAK,EAAI,YAIlB,OADAH,EAAK,EACGF,EAAU,CAChB,IAAK,GACHE,GAAMh+C,EAAK69C,EAAc,EAAI,CAAC,GAAK,GACrC,IAAK,GACHG,GAAMh+C,EAAK69C,EAAc,EAAI,CAAC,GAAK,EACrC,IAAK,GACHG,GAAMh+C,EAAK69C,EAAc,CAAC,EAC1BG,EAAKA,EAAKI,EAAKX,GAAYO,EAAKM,EAASZ,GACzCM,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKK,EAAKZ,GAAYO,EAAKO,EAASb,GACrCG,EAAc,EAChBK,GAAMF,EAENG,GAAMH,CAEX,CACD,KAAK,GAAKE,EACV,KAAK,GAAKC,CACX,CACD,WAAY,CACV,IAAID,EAAK,KAAK,GACZC,EAAK,KAAK,GACZ,OAAAD,GAAMC,IAAO,EACbD,EAAKA,EAAK,WAAaT,GAAYS,EAAK,MAASR,GACjDS,EAAKA,EAAK,WAAaV,KAAcU,GAAM,GAAKD,IAAO,IAAM,WAAaT,MAAe,GACzFS,GAAMC,IAAO,EACbD,EAAKA,EAAK,UAAaT,GAAYS,EAAK,MAASR,GACjDS,EAAKA,EAAK,WAAaV,KAAcU,GAAM,GAAKD,IAAO,IAAM,WAAaT,MAAe,GACzFS,GAAMC,IAAO,GACLD,IAAO,GAAG,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,GAAKC,IAAO,GAAG,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAC1F,CACH,CAMA,MAAMK,GAAoB,OAAO,OAAO,CACtC,IAAK,KACL,KAAM,GACN,SAAU,MACZ,CAAC,qBACD,MAAMC,EAAkB,CAItB,aAAc,CAgEd1kB,EAAA,KAAA2kB,IAnEA3kB,EAAA,KAAA4kB,GAAY,IACZ5kB,EAAA,KAAA6kB,GAAe,MACf7kB,EAAA,KAAA8kB,GAAW,IAAI,KAEb,KAAK,cAAgB,KACrB,KAAK,gBAAkB,KACvB,KAAK,mBAAqB,IAC3B,CACD,SAASn6C,EAAKo6C,EAAc,CAC1B,MAAM3zC,EAAQ6xB,EAAA,KAAK6hB,IAAS,IAAIn6C,CAAG,EACnC,OAAIyG,IAAU,OACL2zC,EAEF,OAAO,OAAOA,EAAc3zC,CAAK,CACzC,CACD,YAAYzG,EAAK,CACf,OAAOs4B,EAAA,KAAK6hB,IAAS,IAAIn6C,CAAG,CAC7B,CACD,OAAOA,EAAK,CAKV,GAJAs4B,EAAA,KAAK6hB,IAAS,OAAOn6C,CAAG,EACpBs4B,EAAA,KAAK6hB,IAAS,OAAS,GACzB,KAAK,cAAa,EAEhB,OAAO,KAAK,oBAAuB,WAAY,CACjD,UAAW1zC,KAAS6xB,EAAA,KAAK6hB,IAAS,OAAM,EACtC,GAAI1zC,aAAiBoyC,GACnB,OAGJ,KAAK,mBAAmB,IAAI,CAC7B,CACF,CACD,SAAS74C,EAAKyG,EAAO,CACnB,MAAMomB,EAAMyL,EAAA,KAAK6hB,IAAS,IAAIn6C,CAAG,EACjC,IAAIq6C,EAAW,GACf,GAAIxtB,IAAQ,OACV,SAAW,CAACytB,EAAOC,CAAG,IAAK,OAAO,QAAQ9zC,CAAK,EACzComB,EAAIytB,CAAK,IAAMC,IACjBF,EAAW,GACXxtB,EAAIytB,CAAK,EAAIC,QAIjBF,EAAW,GACX/hB,EAAA,KAAK6hB,IAAS,IAAIn6C,EAAKyG,CAAK,EAE1B4zC,GACF3lB,EAAA,KAAKslB,GAAAQ,IAAL,WAEE/zC,aAAiBoyC,IAAoB,OAAO,KAAK,oBAAuB,YAC1E,KAAK,mBAAmBpyC,EAAM,YAAY,KAAK,CAElD,CACD,IAAIzG,EAAK,CACP,OAAOs4B,EAAA,KAAK6hB,IAAS,IAAIn6C,CAAG,CAC7B,CACD,QAAS,CACP,OAAOs4B,EAAA,KAAK6hB,IAAS,KAAO,EAAIjoB,GAAcoG,EAAA,KAAK6hB,GAAQ,EAAI,IAChE,CACD,OAAOttB,EAAK,CACV,SAAW,CAAC7sB,EAAKu6C,CAAG,IAAK,OAAO,QAAQ1tB,CAAG,EACzC,KAAK,SAAS7sB,EAAKu6C,CAAG,CAEzB,CACD,IAAI,MAAO,CACT,OAAOjiB,EAAA,KAAK6hB,IAAS,IACtB,CASD,eAAgB,CACV7hB,EAAA,KAAK2hB,MACPzhB,EAAA,KAAKyhB,GAAY,IACb,OAAO,KAAK,iBAAoB,YAClC,KAAK,gBAAe,EAGzB,CACD,IAAI,OAAQ,CACV,OAAO,IAAIQ,GAAuB,IAAI,CACvC,CACD,IAAI,cAAe,CACjB,GAAIniB,EAAA,KAAK6hB,IAAS,OAAS,EACzB,OAAOL,GAET,MAAMnnC,EAAM,IAAI,IACd+nC,EAAO,IAAIzB,GACX0B,EAAW,GACP7zC,EAAU,OAAO,OAAO,IAAI,EAClC,IAAI8zC,EAAY,GAChB,SAAW,CAAC56C,EAAKu6C,CAAG,IAAKjiB,EAAA,KAAK6hB,IAAU,CACtC,MAAM/R,EAAamS,aAAe1B,GAAmB0B,EAAI,UAAU,GAAOzzC,CAAO,EAAIyzC,EACjFnS,IACFz1B,EAAI,IAAI3S,EAAKooC,CAAU,EACvBsS,EAAK,OAAO,GAAG16C,CAAG,IAAI,KAAK,UAAUooC,CAAU,CAAC,EAAE,EAClDwS,MAAc,CAAC,CAACxS,EAAW,QAE9B,CACD,GAAIwS,EACF,UAAWn0C,KAASkM,EAAI,SAClBlM,EAAM,QACRk0C,EAAS,KAAKl0C,EAAM,MAAM,EAIhC,OAAOkM,EAAI,KAAO,EAAI,CACpB,IAAAA,EACA,KAAM+nC,EAAK,UAAW,EACtB,SAAAC,CACD,EAAGb,EACL,CACD,IAAI,aAAc,CAChB,IAAIe,EAAQ,KACZ,MAAMC,EAAe,IAAI,IACzB,UAAWr0C,KAAS6xB,EAAA,KAAK6hB,IAAS,OAAM,EAAI,CAC1C,GAAI,EAAE1zC,aAAiBoyC,IACrB,SAEF,MAAMkC,EAAct0C,EAAM,mBAC1B,GAAI,CAACs0C,EACH,SAEF,KAAM,CACJ,KAAA7yC,CACD,EAAG6yC,EACCD,EAAa,IAAI5yC,CAAI,GACxB4yC,EAAa,IAAI5yC,EAAM,OAAO,eAAezB,CAAK,EAAE,WAAW,EAEjEo0C,MAAU,OAAO,OAAO,IAAI,GAC5B,MAAMloC,EAAMkoC,EAAA3yC,KAAA2yC,EAAA3yC,GAAgB,IAAI,KAChC,SAAW,CAAClI,EAAKu6C,CAAG,IAAK,OAAO,QAAQQ,CAAW,EAAG,CACpD,GAAI/6C,IAAQ,OACV,SAEF,IAAIg7C,EAAWroC,EAAI,IAAI3S,CAAG,EACrBg7C,IACHA,EAAW,IAAI,IACfroC,EAAI,IAAI3S,EAAKg7C,CAAQ,GAEvB,MAAMC,EAAQD,EAAS,IAAIT,CAAG,GAAK,EACnCS,EAAS,IAAIT,EAAKU,EAAQ,CAAC,CAC5B,CACF,CACD,SAAW,CAAC/yC,EAAM4yB,CAAM,IAAKggB,EAC3BD,EAAM3yC,CAAI,EAAI4yB,EAAO,0BAA0B+f,EAAM3yC,CAAI,CAAC,EAE5D,OAAO2yC,CACR,CACD,kBAAmB,CACjBriB,EAAA,KAAK0hB,GAAe,KACrB,CACD,IAAI,aAAc,CAChB,GAAI5hB,EAAA,KAAK4hB,IACP,OAAO5hB,EAAA,KAAK4hB,IAEd,MAAMgB,EAAM,GACZ,UAAWz0C,KAAS6xB,EAAA,KAAK6hB,IAAS,OAAM,EAClC,EAAE1zC,aAAiBoyC,KAAqB,CAACpyC,EAAM,qBAAuB,CAACA,EAAM,aAGjFy0C,EAAI,KAAKz0C,EAAM,mBAAmB,EAEpC,OAAO+xB,EAAA,KAAK0hB,GAAe,CACzB,IAAK,IAAI,IAAIgB,CAAG,EAChB,KAAMA,EAAI,KAAK,GAAG,CACxB,EACG,CACH,CA5KEjB,GAAA,YACAC,GAAA,YACAC,GAAA,YAiEAH,GAAA,YAAAQ,GAAY,UAAG,CACRliB,EAAA,KAAK2hB,MACRzhB,EAAA,KAAKyhB,GAAY,IACb,OAAO,KAAK,eAAkB,YAChC,KAAK,cAAa,EAGvB,SAmGH,MAAMQ,WAA+BV,EAAkB,CAErD,YAAY3c,EAAQ,CAClB,QAFF/H,EAAA,KAAA8lB,GAAA,QAGE,KAAM,CACJ,IAAAxoC,EACA,KAAA+nC,EACA,SAAAC,CACN,EAAQvd,EAAO,aACLge,EAAQ,gBAAgBzoC,EAAKgoC,EAAW,CAC5C,SAAAA,CACD,EAAG,IAAI,EACRniB,EAAA,KAAK2iB,GAAgB,CACnB,IAAKC,EACL,KAAAV,EACA,SAAAC,CACN,EACG,CACD,IAAI,OAAQ,CACV/pB,GAAY,8CAA8C,CAC3D,CACD,IAAI,cAAe,CACjB,OAAO0H,EAAA,KAAK6iB,GACb,CACD,IAAI,aAAc,CAChB,OAAOtrB,GAAO,KAAM,cAAe,CACjC,IAAK,IAAI,IACT,KAAM,EACZ,CAAK,CACF,CACH,CA7BEsrB,GAAA,mBAiCF,MAAME,EAAW,CAEf,YAAY,CACV,cAAAC,EAAgB,WAAW,SAC3B,aAAAC,EAAe,IACnB,EAAK,CAJHlmB,EAAA,KAAAmmB,GAAe,IAAI,KAKjB,KAAK,UAAYF,EACjB,KAAK,gBAAkB,IAAI,IAC3B,KAAK,aAAe,KACpB,KAAK,gBAAkB,GACvB,KAAK,eAAiB,CACvB,CACD,kBAAkBG,EAAgB,CAChC,KAAK,gBAAgB,IAAIA,CAAc,EACvC,KAAK,UAAU,MAAM,IAAIA,CAAc,CACxC,CACD,qBAAqBA,EAAgB,CACnC,KAAK,gBAAgB,OAAOA,CAAc,EAC1C,KAAK,UAAU,MAAM,OAAOA,CAAc,CAC3C,CACD,WAAWC,EAAM,CACV,KAAK,eACR,KAAK,aAAe,KAAK,UAAU,cAAc,OAAO,EACxD,KAAK,UAAU,gBAAgB,qBAAqB,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,YAAY,GAEzF,MAAMC,EAAa,KAAK,aAAa,MACrCA,EAAW,WAAWD,EAAMC,EAAW,SAAS,MAAM,CACvD,CACD,OAAQ,CACN,UAAWF,KAAkB,KAAK,gBAChC,KAAK,UAAU,MAAM,OAAOA,CAAc,EAE5C,KAAK,gBAAgB,QACrBnjB,EAAA,KAAKkjB,IAAa,QACd,KAAK,eACP,KAAK,aAAa,SAClB,KAAK,aAAe,KAEvB,CACD,MAAM,eAAe,CACnB,eAAgB1+B,EAChB,gBAAA8+B,EACA,aAAAC,CACJ,EAAK,CACD,GAAI,GAAC/+B,GAAQwb,EAAA,KAAKkjB,IAAa,IAAI1+B,EAAK,UAAU,GAIlD,IADA+T,GAAO,CAAC+qB,EAAiB,mEAAmE,EACxF,KAAK,0BAA2B,CAClC,KAAM,CACJ,WAAAE,EACA,IAAAvnC,EACA,MAAA2lB,CACD,EAAGpd,EACEi/B,EAAW,IAAI,SAASD,EAAYvnC,EAAK2lB,CAAK,EACpD,KAAK,kBAAkB6hB,CAAQ,EAC/B,GAAI,CACF,MAAMA,EAAS,OACfzjB,EAAA,KAAKkjB,IAAa,IAAIM,CAAU,EAChCD,GAAA,MAAAA,EAAe/+B,EACvB,MAAc,CACN6T,GAAK,4BAA4B7T,EAAK,YAAY,sDAAsD,EACxG,KAAK,qBAAqBi/B,CAAQ,CACnC,CACD,MACD,CACDnrB,GAAY,+DAA+D,EAC5E,CACD,MAAM,KAAKorB,EAAM,CACf,GAAIA,EAAK,UAAYA,EAAK,aAAe,CAACA,EAAK,eAC7C,OAGF,GADAA,EAAK,SAAW,GACZA,EAAK,eAAgB,CACvB,MAAM,KAAK,eAAeA,CAAI,EAC9B,MACD,CACD,GAAI,KAAK,0BAA2B,CAClC,MAAMP,EAAiBO,EAAK,uBAC5B,GAAIP,EAAgB,CAClB,KAAK,kBAAkBA,CAAc,EACrC,GAAI,CACF,MAAMA,EAAe,MACtB,OAAQnT,EAAI,CACX,MAAA3X,GAAK,wBAAwB8qB,EAAe,MAAM,OAAOnT,CAAE,IAAI,EAC/D0T,EAAK,gBAAkB,GACjB1T,CACP,CACF,CACD,MACD,CACD,MAAMoT,EAAOM,EAAK,qBAClB,GAAIN,EAAM,CAER,GADA,KAAK,WAAWA,CAAI,EAChB,KAAK,2BACP,OAEF,MAAM,IAAI,QAAQ5hC,GAAW,CAC3B,MAAM/L,EAAU,KAAK,sBAAsB+L,CAAO,EAClD,KAAK,sBAAsBkiC,EAAMjuC,CAAO,CAChD,CAAO,CACF,CACF,CACD,IAAI,2BAA4B,OAC9B,MAAMkuC,EAAW,CAAC,GAACxpB,EAAA,KAAK,YAAL,MAAAA,EAAgB,OACnC,OAAO5C,GAAO,KAAM,4BAA6BosB,CAAQ,CAC1D,CACD,IAAI,4BAA6B,CAC/B,OAAOpsB,GAAO,KAAM,6BAA8BG,IAAYtC,GAAiB,SAAS,SAAS,CAClG,CACD,sBAAsBtyB,EAAU,CAC9B,SAAS8gD,GAAkB,CAGzB,IAFArrB,GAAO,CAAC9iB,EAAQ,KAAM,2CAA2C,EACjEA,EAAQ,KAAO,GACRouC,EAAgB,OAAS,GAAKA,EAAgB,CAAC,EAAE,MAAM,CAC5D,MAAMC,EAAeD,EAAgB,QACrC,WAAWC,EAAa,SAAU,CAAC,CACpC,CACF,CACD,KAAM,CACJ,gBAAAD,CACD,EAAG,KACEpuC,EAAU,CACd,KAAM,GACN,SAAUmuC,EACV,SAAA9gD,CACN,EACI,OAAA+gD,EAAgB,KAAKpuC,CAAO,EACrBA,CACR,CACD,IAAI,eAAgB,CAClB,MAAMsuC,EAAW,KAAK,09CAAmkD,EACzlD,OAAOxsB,GAAO,KAAM,gBAAiBwsB,CAAQ,CAC9C,CACD,sBAAsBL,EAAMjuC,EAAS,CACnC,SAASuuC,EAAMhhD,EAAMihD,EAAQ,CAC3B,OAAOjhD,EAAK,WAAWihD,CAAM,GAAK,GAAKjhD,EAAK,WAAWihD,EAAS,CAAC,GAAK,GAAKjhD,EAAK,WAAWihD,EAAS,CAAC,GAAK,EAAIjhD,EAAK,WAAWihD,EAAS,CAAC,EAAI,GAC7I,CACD,SAASC,EAAahxC,EAAG+wC,EAAQE,EAAQC,EAAQ,CAC/C,MAAMC,GAASnxC,EAAE,UAAU,EAAG+wC,CAAM,EAC9BK,GAASpxC,EAAE,UAAU+wC,EAASE,CAAM,EAC1C,OAAOE,GAASD,EAASE,EAC1B,CACD,IAAI5+C,EAAG05B,EACP,MAAMp5B,EAAS,KAAK,UAAU,cAAc,QAAQ,EACpDA,EAAO,MAAQ,EACfA,EAAO,OAAS,EAChB,MAAMM,EAAMN,EAAO,WAAW,IAAI,EAClC,IAAIgP,EAAS,EACb,SAASuvC,EAAYryC,EAAMpP,EAAU,CACnC,GAAI,EAAEkS,EAAS,GAAI,CACjBqjB,GAAK,8BAA8B,EACnCv1B,IACA,MACD,CAID,GAHAwD,EAAI,KAAO,QAAU4L,EACrB5L,EAAI,SAAS,IAAK,EAAG,EAAE,EACLA,EAAI,aAAa,EAAG,EAAG,EAAG,CAAC,EAC/B,KAAK,CAAC,EAAI,EAAG,CACzBxD,IACA,MACD,CACD,WAAWyhD,EAAY,KAAK,KAAMryC,EAAMpP,CAAQ,CAAC,CAClD,CACD,MAAM0hD,EAAiB,KAAK,KAAK,IAAK,IAAG,KAAK,gBAAgB,GAC9D,IAAIxhD,EAAO,KAAK,cAEhBA,EAAOkhD,EAAalhD,EADG,IACmBwhD,EAAe,OAAQA,CAAc,EAC/E,MAAMC,EAAsB,GACtBC,EAAa,WACnB,IAAIC,EAAWX,EAAMhhD,EAAMyhD,CAAmB,EAC9C,IAAK/+C,EAAI,EAAG05B,EAAKolB,EAAe,OAAS,EAAG9+C,EAAI05B,EAAI15B,GAAK,EACvDi/C,EAAWA,EAAWD,EAAaV,EAAMQ,EAAgB9+C,CAAC,EAAI,EAE5DA,EAAI8+C,EAAe,SACrBG,EAAWA,EAAWD,EAAaV,EAAMQ,EAAiB,MAAO9+C,CAAC,EAAI,GAExE1C,EAAOkhD,EAAalhD,EAAMyhD,EAAqB,EAAG9qB,GAASgrB,CAAQ,CAAC,EACpE,MAAM9hD,EAAM,iCAAiC,KAAKG,CAAI,CAAC,KACjDogD,EAAO,4BAA4BoB,CAAc,SAAS3hD,CAAG,IACnE,KAAK,WAAWugD,CAAI,EACpB,MAAM9hB,EAAM,KAAK,UAAU,cAAc,KAAK,EAC9CA,EAAI,MAAM,WAAa,SACvBA,EAAI,MAAM,MAAQA,EAAI,MAAM,OAAS,OACrCA,EAAI,MAAM,SAAW,WACrBA,EAAI,MAAM,IAAMA,EAAI,MAAM,KAAO,MACjC,UAAWpvB,IAAQ,CAACwxC,EAAK,WAAYc,CAAc,EAAG,CACpD,MAAMtjB,EAAO,KAAK,UAAU,cAAc,MAAM,EAChDA,EAAK,YAAc,KACnBA,EAAK,MAAM,WAAahvB,EACxBovB,EAAI,OAAOJ,CAAI,CAChB,CACD,KAAK,UAAU,KAAK,OAAOI,CAAG,EAC9BijB,EAAYC,EAAgB,IAAM,CAChCljB,EAAI,OAAM,EACV7rB,EAAQ,SAAQ,CACtB,CAAK,CACF,CACH,CArMEytC,GAAA,YAsMF,MAAM0B,EAAe,CACnB,YAAYC,EAAgBC,EAAc,KAAM,CAC9C,KAAK,eAAiB,OAAO,OAAO,IAAI,EACxC,UAAW,KAAKD,EACd,KAAK,CAAC,EAAIA,EAAe,CAAC,EAE5B,KAAK,aAAeC,CACrB,CACD,sBAAuB,OACrB,GAAI,CAAC,KAAK,MAAQ,KAAK,gBACrB,OAAO,KAET,IAAI3B,EACJ,GAAI,CAAC,KAAK,YACRA,EAAiB,IAAI,SAAS,KAAK,WAAY,KAAK,KAAM,EAAE,MACvD,CACL,MAAM4B,EAAM,CACV,OAAQ,KAAK,YAAY,UACjC,EACU,KAAK,YAAY,cACnBA,EAAI,MAAQ,WAAW,KAAK,YAAY,WAAW,OAErD5B,EAAiB,IAAI,SAAS,KAAK,YAAY,WAAY,KAAK,KAAM4B,CAAG,CAC1E,CACD,OAAA5qB,EAAA,KAAK,eAAL,MAAAA,EAAA,UAAoB,MACbgpB,CACR,CACD,oBAAqB,OACnB,GAAI,CAAC,KAAK,MAAQ,KAAK,gBACrB,OAAO,KAET,MAAMtgD,EAAM,YAAY,KAAK,QAAQ,WAAW86B,GAAa,KAAK,IAAI,CAAC,KACvE,IAAIylB,EACJ,GAAI,CAAC,KAAK,YACRA,EAAO,4BAA4B,KAAK,UAAU,SAASvgD,CAAG,QACzD,CACL,IAAIkiD,EAAM,gBAAgB,KAAK,YAAY,UAAU,IACjD,KAAK,YAAY,cACnBA,GAAO,uBAAuB,KAAK,YAAY,WAAW,QAE5D3B,EAAO,4BAA4B,KAAK,YAAY,UAAU,KAAK2B,CAAG,OAAOliD,CAAG,GACjF,CACD,OAAAs3B,EAAA,KAAK,eAAL,MAAAA,EAAA,UAAoB,KAAMt3B,GACnBugD,CACR,CACD,iBAAiB4B,EAAMC,EAAW,CAChC,GAAI,KAAK,eAAeA,CAAS,IAAM,OACrC,OAAO,KAAK,eAAeA,CAAS,EAEtC,MAAMC,EAAQ,KAAK,WAAa,SAAWD,EAC3C,IAAIE,EACJ,GAAI,CACFA,EAAOH,EAAK,IAAIE,CAAK,CACtB,OAAQlV,EAAI,CACX3X,GAAK,2CAA2C2X,CAAE,IAAI,CACvD,CACD,MAAM70B,EAAO,IAAI,OAAOgqC,GAAQ,EAAE,EAClC,OAAK,KAAK,qBACRH,EAAK,OAAOE,CAAK,EAEZ,KAAK,eAAeD,CAAS,EAAI9pC,CACzC,CACH,CAIA,MAAMiqC,GAAe,CACnB,KAAM,EACN,MAAO,CACT,EACMC,GAAa,CACjB,OAAQ,EACR,gBAAiB,EACjB,MAAO,EACP,QAAS,EACT,MAAO,EACP,KAAM,EACN,cAAe,EACf,eAAgB,CAClB,EACA,SAASC,IAAO,CAAE,CAClB,SAASC,GAAWvV,EAAI,CACtB,GAAIA,aAAcvb,IAAkBub,aAAcza,IAAuBya,aAAchX,IAAqBgX,aAAc9Z,IAAqB8Z,aAAc/W,GAC3J,OAAO+W,EAKT,OAHMA,aAAc,OAAS,OAAOA,GAAO,UAAYA,IAAO,MAC5D1X,GAAY,gEAAgE,EAEtE0X,EAAG,KAAI,CACb,IAAK,iBACH,OAAO,IAAIvb,GAAeub,EAAG,OAAO,EACtC,IAAK,sBACH,OAAO,IAAIza,GAAoBya,EAAG,OAAO,EAC3C,IAAK,oBACH,OAAO,IAAIhX,GAAkBgX,EAAG,QAASA,EAAG,IAAI,EAClD,IAAK,oBACH,OAAO,IAAI9Z,GAAkB8Z,EAAG,QAASA,EAAG,OAAQA,EAAG,OAAO,EAChE,IAAK,wBACH,OAAO,IAAI/W,GAAsB+W,EAAG,QAASA,EAAG,OAAO,CAC1D,CACD,OAAO,IAAI/W,GAAsB+W,EAAG,QAASA,EAAG,SAAQ,CAAE,CAC5D,gCACA,MAAM/iC,EAAe,CAEnB,YAAYu4C,EAAYC,EAAYC,EAAQ,CAc5C3oB,EAAA,KAAA4oB,IAgJA5oB,EAAA,KAAA6oB,IAiFA7oB,EAAA,KAAA8oB,IAkHA9oB,EAAA,KAAM+oB,IAlWN/oB,EAAA,KAAAgpB,GAAa,IAAI,iBAEf,KAAK,WAAaP,EAClB,KAAK,WAAaC,EAClB,KAAK,OAASC,EACd,KAAK,WAAa,EAClB,KAAK,SAAW,EAChB,KAAK,YAAc,OAAO,OAAO,IAAI,EACrC,KAAK,kBAAoB,OAAO,OAAO,IAAI,EAC3C,KAAK,qBAAuB,OAAO,OAAO,IAAI,EAC9C,KAAK,cAAgB,OAAO,OAAO,IAAI,EACvCA,EAAO,iBAAiB,UAAWtpB,EAAA,KAAKupB,GAAAK,IAAW,KAAK,IAAI,EAAG,CAC7D,OAAQhmB,EAAA,KAAK+lB,IAAW,MAC9B,CAAK,CACF,CA4DD,GAAGr2C,EAAYu2C,EAAS,CACtB,MAAMC,EAAK,KAAK,cAChB,GAAIA,EAAGx2C,CAAU,EACf,MAAM,IAAI,MAAM,0CAA0CA,CAAU,GAAG,EAEzEw2C,EAAGx2C,CAAU,EAAIu2C,CAClB,CACD,KAAKv2C,EAAY1M,EAAMmjD,EAAW,CAChC,KAAK,OAAO,YAAY,CACtB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,OAAQz2C,EACR,KAAA1M,CACD,EAAEmjD,CAAS,CACb,CACD,gBAAgBz2C,EAAY1M,EAAMmjD,EAAW,CAC3C,MAAMC,EAAa,KAAK,aAClBC,EAAa,QAAQ,gBAC3B,KAAK,qBAAqBD,CAAU,EAAIC,EACxC,GAAI,CACF,KAAK,OAAO,YAAY,CACtB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,OAAQ32C,EACR,WAAA02C,EACA,KAAApjD,CACD,EAAEmjD,CAAS,CACb,OAAQnW,EAAI,CACXqW,EAAW,OAAOrW,CAAE,CACrB,CACD,OAAOqW,EAAW,OACnB,CACD,eAAe32C,EAAY1M,EAAMsjD,EAAkBH,EAAW,CAC5D,MAAMI,EAAW,KAAK,WACpBf,EAAa,KAAK,WAClBC,EAAa,KAAK,WAClBC,EAAS,KAAK,OAChB,OAAO,IAAI,eAAe,CACxB,MAAOc,GAAc,CACnB,MAAMC,EAAkB,QAAQ,gBAChC,YAAK,kBAAkBF,CAAQ,EAAI,CACjC,WAAAC,EACA,UAAWC,EACX,SAAU,KACV,WAAY,KACZ,SAAU,EACpB,EACQf,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQ/1C,EACR,SAAA62C,EACA,KAAAvjD,EACA,YAAawjD,EAAW,WACzB,EAAEL,CAAS,EACLM,EAAgB,OACxB,EACD,KAAMD,GAAc,CAClB,MAAME,EAAiB,QAAQ,gBAC/B,YAAK,kBAAkBH,CAAQ,EAAE,SAAWG,EAC5ChB,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,KACnB,SAAAkB,EACA,YAAaC,EAAW,WAClC,CAAS,EACME,EAAe,OACvB,EACD,OAAQn+B,GAAU,CAChBgQ,GAAOhQ,aAAkB,MAAO,iCAAiC,EACjE,MAAMo+B,EAAmB,QAAQ,gBACjC,YAAK,kBAAkBJ,CAAQ,EAAE,WAAaI,EAC9C,KAAK,kBAAkBJ,CAAQ,EAAE,SAAW,GAC5Cb,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,OACnB,SAAAkB,EACA,OAAQhB,GAAWh9B,CAAM,CACnC,CAAS,EACMo+B,EAAiB,OACzB,CACF,EAAEL,CAAgB,CACpB,CAwMD,SAAU,QACRnsB,EAAA6F,EAAA,KAAK+lB,MAAL,MAAA5rB,EAAiB,QACjB+F,EAAA,KAAK6lB,GAAa,KACnB,CACH,CA1WEA,GAAA,YAeAJ,GAAA,YAAAK,GAAU,SAAC,CACT,KAAAhjD,CACJ,EAAK,CACD,GAAIA,EAAK,aAAe,KAAK,WAC3B,OAEF,GAAIA,EAAK,OAAQ,CACfo5B,EAAA,KAAKypB,GAAAe,IAAL,UAA2B5jD,GAC3B,MACD,CACD,GAAIA,EAAK,SAAU,CACjB,MAAMojD,EAAapjD,EAAK,WAClBqjD,EAAa,KAAK,qBAAqBD,CAAU,EACvD,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,2BAA2BD,CAAU,EAAE,EAGzD,GADA,OAAO,KAAK,qBAAqBA,CAAU,EACvCpjD,EAAK,WAAaoiD,GAAa,KACjCiB,EAAW,QAAQrjD,EAAK,IAAI,UACnBA,EAAK,WAAaoiD,GAAa,MACxCiB,EAAW,OAAOd,GAAWviD,EAAK,MAAM,CAAC,MAEzC,OAAM,IAAI,MAAM,0BAA0B,EAE5C,MACD,CACD,MAAMsd,EAAS,KAAK,cAActd,EAAK,MAAM,EAC7C,GAAI,CAACsd,EACH,MAAM,IAAI,MAAM,+BAA+Btd,EAAK,MAAM,EAAE,EAE9D,GAAIA,EAAK,WAAY,CACnB,MAAMwiD,EAAa,KAAK,WACtBC,EAAaziD,EAAK,WAClB0iD,EAAS,KAAK,OAChB,QAAQ,IAAIplC,EAAQtd,EAAK,IAAI,EAAE,KAAK,SAAU0Q,EAAQ,CACpDgyC,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,SAAUL,GAAa,KACvB,WAAYpiD,EAAK,WACjB,KAAM0Q,CAChB,CAAS,CACF,EAAE,SAAU6U,EAAQ,CACnBm9B,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,SAAUL,GAAa,MACvB,WAAYpiD,EAAK,WACjB,OAAQuiD,GAAWh9B,CAAM,CACnC,CAAS,CACT,CAAO,EACD,MACD,CACD,GAAIvlB,EAAK,SAAU,CACjBo5B,EAAA,KAAKwpB,GAAAiB,IAAL,UAAuB7jD,GACvB,MACD,CACDsd,EAAOtd,EAAK,IAAI,CACjB,EAsFD4iD,GAAA,YAAAiB,GAAiB,SAAC7jD,EAAM,CACtB,MAAMujD,EAAWvjD,EAAK,SACpBwiD,EAAa,KAAK,WAClBC,EAAaziD,EAAK,WAClB0iD,EAAS,KAAK,OACVlwC,EAAO,KACX8K,EAAS,KAAK,cAActd,EAAK,MAAM,EACnC8jD,EAAa,CACjB,QAAQj/B,EAAOhZ,EAAO,EAAGs3C,EAAW,CAClC,GAAI,KAAK,YACP,OAEF,MAAMY,EAAkB,KAAK,YAC7B,KAAK,aAAel4C,EAChBk4C,EAAkB,GAAK,KAAK,aAAe,IAC7C,KAAK,eAAiB,QAAQ,gBAC9B,KAAK,MAAQ,KAAK,eAAe,SAEnCrB,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,QACnB,SAAAkB,EACA,MAAA1+B,CACD,EAAEs+B,CAAS,CACb,EACD,OAAQ,CACF,KAAK,cAGT,KAAK,YAAc,GACnBT,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,MACnB,SAAAkB,CACV,CAAS,EACD,OAAO/wC,EAAK,YAAY+wC,CAAQ,EACjC,EACD,MAAMh+B,EAAQ,CACZgQ,GAAOhQ,aAAkB,MAAO,gCAAgC,EAC5D,MAAK,cAGT,KAAK,YAAc,GACnBm9B,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,MACnB,SAAAkB,EACA,OAAQhB,GAAWh9B,CAAM,CACnC,CAAS,EACF,EACD,eAAgB,QAAQ,cAAe,EACvC,OAAQ,KACR,SAAU,KACV,YAAa,GACb,YAAavlB,EAAK,YAClB,MAAO,IACb,EACI8jD,EAAW,eAAe,UAC1BA,EAAW,MAAQA,EAAW,eAAe,QAC7C,KAAK,YAAYP,CAAQ,EAAIO,EAC7B,QAAQ,IAAIxmC,EAAQtd,EAAK,KAAM8jD,CAAU,EAAE,KAAK,UAAY,CAC1DpB,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,eACnB,SAAAkB,EACA,QAAS,EACjB,CAAO,CACF,EAAE,SAAUh+B,EAAQ,CACnBm9B,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,eACnB,SAAAkB,EACA,OAAQhB,GAAWh9B,CAAM,CACjC,CAAO,CACP,CAAK,CACF,EACDs9B,GAAA,YAAAe,GAAqB,SAAC5jD,EAAM,CAC1B,MAAMujD,EAAWvjD,EAAK,SACpBwiD,EAAa,KAAK,WAClBC,EAAaziD,EAAK,WAClB0iD,EAAS,KAAK,OACVsB,EAAmB,KAAK,kBAAkBT,CAAQ,EACtDO,EAAa,KAAK,YAAYP,CAAQ,EACxC,OAAQvjD,EAAK,OAAM,CACjB,KAAKqiD,GAAW,eACVriD,EAAK,QACPgkD,EAAiB,UAAU,UAE3BA,EAAiB,UAAU,OAAOzB,GAAWviD,EAAK,MAAM,CAAC,EAE3D,MACF,KAAKqiD,GAAW,cACVriD,EAAK,QACPgkD,EAAiB,SAAS,UAE1BA,EAAiB,SAAS,OAAOzB,GAAWviD,EAAK,MAAM,CAAC,EAE1D,MACF,KAAKqiD,GAAW,KACd,GAAI,CAACyB,EAAY,CACfpB,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,cACnB,SAAAkB,EACA,QAAS,EACrB,CAAW,EACD,KACD,CACGO,EAAW,aAAe,GAAK9jD,EAAK,YAAc,GACpD8jD,EAAW,eAAe,UAE5BA,EAAW,YAAc9jD,EAAK,YAC9B,QAAQ,IAAI8jD,EAAW,QAAUxB,EAAI,EAAE,KAAK,UAAY,CACtDI,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,cACnB,SAAAkB,EACA,QAAS,EACrB,CAAW,CACF,EAAE,SAAUh+B,EAAQ,CACnBm9B,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,cACnB,SAAAkB,EACA,OAAQhB,GAAWh9B,CAAM,CACrC,CAAW,CACX,CAAS,EACD,MACF,KAAK88B,GAAW,QAEd,GADA9sB,GAAOyuB,EAAkB,uCAAuC,EAC5DA,EAAiB,SACnB,MAEFA,EAAiB,WAAW,QAAQhkD,EAAK,KAAK,EAC9C,MACF,KAAKqiD,GAAW,MAEd,GADA9sB,GAAOyuB,EAAkB,qCAAqC,EAC1DA,EAAiB,SACnB,MAEFA,EAAiB,SAAW,GAC5BA,EAAiB,WAAW,QAC5B5qB,EAAA,KAAK0pB,GAAAmB,IAAL,UAA6BD,EAAkBT,GAC/C,MACF,KAAKlB,GAAW,MACd9sB,GAAOyuB,EAAkB,qCAAqC,EAC9DA,EAAiB,WAAW,MAAMzB,GAAWviD,EAAK,MAAM,CAAC,EACzDo5B,EAAA,KAAK0pB,GAAAmB,IAAL,UAA6BD,EAAkBT,GAC/C,MACF,KAAKlB,GAAW,gBACVriD,EAAK,QACPgkD,EAAiB,WAAW,UAE5BA,EAAiB,WAAW,OAAOzB,GAAWviD,EAAK,MAAM,CAAC,EAE5Do5B,EAAA,KAAK0pB,GAAAmB,IAAL,UAA6BD,EAAkBT,GAC/C,MACF,KAAKlB,GAAW,OACd,GAAI,CAACyB,EACH,MAEF,MAAMI,EAAa3B,GAAWviD,EAAK,MAAM,EACzC,QAAQ,IAAI8jD,EAAW,UAAYxB,GAAM4B,CAAU,EAAE,KAAK,UAAY,CACpExB,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,gBACnB,SAAAkB,EACA,QAAS,EACrB,CAAW,CACF,EAAE,SAAUh+B,EAAQ,CACnBm9B,EAAO,YAAY,CACjB,WAAAF,EACA,WAAAC,EACA,OAAQJ,GAAW,gBACnB,SAAAkB,EACA,OAAQhB,GAAWh9B,CAAM,CACrC,CAAW,CACX,CAAS,EACDu+B,EAAW,eAAe,OAAOI,CAAU,EAC3CJ,EAAW,YAAc,GACzB,OAAO,KAAK,YAAYP,CAAQ,EAChC,MACF,QACE,MAAM,IAAI,MAAM,wBAAwB,CAC3C,CACF,EACKT,GAAA,YAAAmB,GAAuB,eAACD,EAAkBT,EAAU,WACxD,MAAM,QAAQ,WAAW,EAACpsB,EAAA6sB,EAAiB,YAAjB,YAAA7sB,EAA4B,SAASD,EAAA8sB,EAAiB,WAAjB,YAAA9sB,EAA2B,SAAS6T,EAAAiZ,EAAiB,aAAjB,YAAAjZ,EAA6B,OAAO,CAAC,EACxI,OAAO,KAAK,kBAAkBwY,CAAQ,CACvC,SASH,MAAMY,EAAkB,CAEtB,YAAY,CACV,UAAAC,EAAY,EAChB,EAAK,CAHHrqB,EAAA,KAAAsqB,GAAa,IAIXnnB,EAAA,KAAKmnB,GAAaD,EACnB,CACD,OAAOx/C,EAAOR,EAAQ,CACpB,GAAIQ,GAAS,GAAKR,GAAU,EAC1B,MAAM,IAAI,MAAM,qBAAqB,EAEvC,MAAMpB,EAAS,KAAK,cAAc4B,EAAOR,CAAM,EAC/C,MAAO,CACL,OAAApB,EACA,QAASA,EAAO,WAAW,KAAM,CAC/B,mBAAoB,CAACg6B,EAAA,KAAKqnB,GAClC,CAAO,CACP,CACG,CACD,MAAMC,EAAkB1/C,EAAOR,EAAQ,CACrC,GAAI,CAACkgD,EAAiB,OACpB,MAAM,IAAI,MAAM,yBAAyB,EAE3C,GAAI1/C,GAAS,GAAKR,GAAU,EAC1B,MAAM,IAAI,MAAM,qBAAqB,EAEvCkgD,EAAiB,OAAO,MAAQ1/C,EAChC0/C,EAAiB,OAAO,OAASlgD,CAClC,CACD,QAAQkgD,EAAkB,CACxB,GAAI,CAACA,EAAiB,OACpB,MAAM,IAAI,MAAM,yBAAyB,EAE3CA,EAAiB,OAAO,MAAQ,EAChCA,EAAiB,OAAO,OAAS,EACjCA,EAAiB,OAAS,KAC1BA,EAAiB,QAAU,IAC5B,CACD,cAAc1/C,EAAOR,EAAQ,CAC3BkxB,GAAY,yCAAyC,CACtD,CACH,CAxCE+uB,GAAA,YAyCF,MAAME,WAAyBJ,EAAkB,CAC/C,YAAY,CACV,cAAAnE,EAAgB,WAAW,SAC3B,UAAAoE,EAAY,EAChB,EAAK,CACD,MAAM,CACJ,UAAAA,CACN,CAAK,EACD,KAAK,UAAYpE,CAClB,CACD,cAAcp7C,EAAOR,EAAQ,CAC3B,MAAMpB,EAAS,KAAK,UAAU,cAAc,QAAQ,EACpD,OAAAA,EAAO,MAAQ4B,EACf5B,EAAO,OAASoB,EACTpB,CACR,CACH,CAKA,MAAMwhD,EAAsB,CAC1B,YAAY,CACV,QAAA9uB,EAAU,KACV,aAAA+uB,EAAe,EACnB,EAAK,CACD,KAAK,QAAU/uB,EACf,KAAK,aAAe+uB,CACrB,CACD,MAAM,MAAM,CACV,KAAAv1C,CACJ,EAAK,CACD,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,yEAAyE,EAE3F,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,8BAA8B,EAEhD,MAAMrP,EAAM,KAAK,QAAUqP,GAAQ,KAAK,aAAe,SAAW,IAClE,OAAO,KAAK,OAAOrP,CAAG,EAAE,KAAK6kD,IAAa,CACxC,SAAAA,EACA,aAAc,KAAK,YACzB,EAAM,EAAE,MAAMn/B,GAAU,CAClB,MAAM,IAAI,MAAM,kBAAkB,KAAK,aAAe,UAAY,EAAE,YAAY1lB,CAAG,EAAE,CAC3F,CAAK,CACF,CACD,MAAM,OAAOA,EAAK,CAChBy1B,GAAY,kCAAkC,CAC/C,CACH,CACA,MAAMqvB,WAA6BH,EAAsB,CACvD,MAAM,OAAO3kD,EAAK,CAChB,MAAMG,EAAO,MAAM2zB,GAAU9zB,EAAK,KAAK,aAAe,cAAgB,MAAM,EAC5E,OAAOG,aAAgB,YAAc,IAAI,WAAWA,CAAI,EAAIy2B,GAAcz2B,CAAI,CAC/E,CACH,CAKA,MAAM4kD,EAAkB,CACtB,UAAUC,EAAM,CACd,MAAO,MACR,CACD,aAAaC,EAASC,EAAS,CAC7B,MAAO,MACR,CACD,eAAe1tC,EAAK,CAClB,MAAO,MACR,CACD,oBAAoBA,EAAK,CACvB,MAAO,MACR,CACD,sBAAsB2tC,EAAYF,EAASC,EAASE,EAAYC,EAAY,CAC1E,MAAO,MACR,CACD,QAAQC,EAAU,GAAO,CAAE,CAC7B,kGACA,MAAMC,WAAyBR,EAAkB,CAQ/C,YAAY,CACV,MAAAS,EACA,cAAArF,EAAgB,WAAW,QAC/B,EAAK,CACD,QAIFjmB,EAAA,KAAI+I,IAGJ/I,EAAA,KAAIurB,IAGJvrB,EAAA,KAAIwrB,IAsBJxrB,EAAA,KAAAyrB,IAqBAzrB,EAAA,KAAA0rB,IA+MA1rB,EAAA,KAAA2rB,IAMA3rB,EAAA,KAAA4rB,IAMA5rB,EAAA,KAAA6rB,IAOA7rB,EAAA,KAAA8rB,IAMA9rB,EAAA,KAAA+rB,IAOA/rB,EAAA,KAAAgsB,IAKAhsB,EAAA,KAAAisB,IApTAjsB,EAAA,KAAAksB,GAAA,QACAlsB,EAAA,KAAAmsB,GAAA,QACAnsB,EAAA,KAAAosB,GAAA,QACApsB,EAAA,KAAAqsB,GAAA,QACArsB,EAAA,KAAAssB,GAAA,QACAtsB,EAAA,KAAAusB,GAAA,QACAvsB,EAAA,KAAA0I,GAAM,GAMJvF,EAAA,KAAKkpB,GAASf,GACdnoB,EAAA,KAAKmpB,GAAYrG,EAClB,CAgED,UAAU6E,EAAM,CACd,GAAI,CAACA,EACH,MAAO,OAET,IAAI15C,EAAQ6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI1B,CAAI,EAChC,GAAI15C,EACF,OAAOA,EAET,KAAM,CAACq7C,EAAQC,EAAQC,CAAM,EAAIttB,EAAA,KAAKosB,GAAAmB,IAAL,UAAmB9B,GAC9CngD,EAAMmgD,EAAK,SAAW,EAAI2B,EAAS,GAAGA,CAAM,GAAGC,CAAM,GAAGC,CAAM,GAEpE,GADAv7C,EAAQ6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI7hD,CAAG,EACvByG,EACF,OAAA6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI1B,EAAM15C,CAAK,EACpBA,EAET,MAAM4G,EAAK,KAAKirB,EAAA,KAAKopB,GAAM,iBAAiB1jB,GAAA,KAAKD,IAAL,GAAU,GAChD5iC,EAAMu5B,EAAA,KAAKqsB,GAAAmB,IAAL,UAAgB70C,GAC5BirB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI1B,EAAMhlD,CAAG,EACzBm9B,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI7hD,EAAK7E,CAAG,EACxB,MAAM0X,EAAS6hB,EAAA,KAAKwsB,GAAAiB,IAAL,UAAmB90C,GAClC,OAAAqnB,EAAA,KAAK0sB,GAAAgB,IAAL,UAA+BN,EAAQC,EAAQC,EAAQnvC,GAChD1X,CACR,CACD,aAAailD,EAASC,EAAS,OAC7B,MAAMrgD,EAAM,GAAGogD,CAAO,IAAIC,CAAO,GAC3BC,EAAa,OACnB,IAAIxjC,EAAOwb,EAAA,KAAKsoB,GAAAyB,IAAU,IAAI/B,CAAU,EAiBxC,IAhBIxjC,GAAA,YAAAA,EAAM,OAAQ9c,IAGd8c,IACF2V,EAAA3V,EAAK,SAAL,MAAA2V,EAAa,SACb3V,EAAK,IAAM9c,EACX8c,EAAK,IAAM,OACXA,EAAK,OAAS,OAEdA,EAAO,CACL,IAAA9c,EACA,IAAK,OACL,OAAQ,IAChB,EACMs4B,EAAA,KAAKsoB,GAAAyB,IAAU,IAAI/B,EAAYxjC,CAAI,GAEjC,CAACsjC,GAAW,CAACC,GACf,OAAOvjC,EAAK,IAEd,MAAMwlC,EAAQ5tB,EAAA,KAAK4sB,GAAAiB,IAAL,UAAanC,GAC3BA,EAAU9uC,GAAK,aAAa,GAAGgxC,CAAK,EACpC,MAAME,EAAQ9tB,EAAA,KAAK4sB,GAAAiB,IAAL,UAAalC,GAG3B,GAFAA,EAAU/uC,GAAK,aAAa,GAAGkxC,CAAK,EACpClqB,EAAA,KAAKuoB,GAAA4B,IAAM,MAAM,MAAQ,GACrBrC,IAAY,WAAaC,IAAY,WAAaD,IAAYC,EAChE,OAAOvjC,EAAK,IAEd,MAAMnK,EAAM,IAAI,MAAM,GAAG,EACzB,QAAS3U,EAAI,EAAGA,GAAK,IAAKA,IAAK,CAC7B,MAAMurB,EAAIvrB,EAAI,IACd2U,EAAI3U,CAAC,EAAIurB,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,GAC9D,CACD,MAAMm5B,EAAQ/vC,EAAI,KAAK,GAAG,EACpBtF,EAAK,KAAKirB,EAAA,KAAKopB,GAAM,cACrB7uC,EAASiK,EAAK,OAAS4X,EAAA,KAAKwsB,GAAAiB,IAAL,UAAmB90C,GAChDqnB,EAAA,KAAK0sB,GAAAgB,IAAL,UAA+BM,EAAOA,EAAOA,EAAO7vC,GACpD6hB,EAAA,KAAKusB,GAAA0B,IAAL,UAAwB9vC,GACxB,MAAM+vC,EAAW,CAACt3C,EAAG6d,IAAM,CACzB,MAAMgP,EAAQmqB,EAAMh3C,CAAC,EAAI,IACnB8sB,EAAMoqB,EAAMl3C,CAAC,EAAI,IACjBjD,EAAM,IAAI,MAAM8gB,EAAI,CAAC,EAC3B,QAASnrB,EAAI,EAAGA,GAAKmrB,EAAGnrB,IACtBqK,EAAIrK,CAAC,EAAIm6B,EAAQn6B,EAAImrB,GAAKiP,EAAMD,GAElC,OAAO9vB,EAAI,KAAK,GAAG,CACzB,EACI,OAAAqsB,EAAA,KAAK0sB,GAAAgB,IAAL,UAA+BQ,EAAS,EAAG,CAAC,EAAGA,EAAS,EAAG,CAAC,EAAGA,EAAS,EAAG,CAAC,EAAG/vC,GAC/EiK,EAAK,IAAM4X,EAAA,KAAKqsB,GAAAmB,IAAL,UAAgB70C,GACpByP,EAAK,GACb,CACD,eAAenK,EAAK,CAClB,IAAIlM,EAAQ6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAIlvC,CAAG,EAC/B,GAAIlM,EACF,OAAOA,EAET,KAAM,CAACo8C,CAAM,EAAInuB,EAAA,KAAKosB,GAAAmB,IAAL,UAAmB,CAACtvC,CAAG,GAClC3S,EAAM,SAAS6iD,CAAM,GAE3B,GADAp8C,EAAQ6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI7hD,CAAG,EACvByG,EACF,OAAA6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAIlvC,EAAKlM,CAAK,EACnBA,EAET,MAAM4G,EAAK,KAAKirB,EAAA,KAAKopB,GAAM,cAAc1jB,GAAA,KAAKD,IAAL,GAAU,GAC7C5iC,EAAMu5B,EAAA,KAAKqsB,GAAAmB,IAAL,UAAgB70C,GAC5BirB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAIlvC,EAAKxX,CAAG,EACxBm9B,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI7hD,EAAK7E,CAAG,EACxB,MAAM0X,EAAS6hB,EAAA,KAAKwsB,GAAAiB,IAAL,UAAmB90C,GAClC,OAAAqnB,EAAA,KAAK2sB,GAAAyB,IAAL,UAAoCD,EAAQhwC,GACrC1X,CACR,CACD,oBAAoBwX,EAAK,CACvB,IAAIlM,EAAQ6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAIlvC,GAAO,YAAY,EAC/C,GAAIlM,EACF,OAAOA,EAET,IAAIo8C,EAAQ7iD,EAQZ,GAPI2S,GACF,CAACkwC,CAAM,EAAInuB,EAAA,KAAKosB,GAAAmB,IAAL,UAAmB,CAACtvC,CAAG,GAClC3S,EAAM,cAAc6iD,CAAM,IAE1B7iD,EAAM,aAERyG,EAAQ6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI7hD,CAAG,EACvByG,EACF,OAAA6xB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAIlvC,EAAKlM,CAAK,EACnBA,EAET,MAAM4G,EAAK,KAAKirB,EAAA,KAAKopB,GAAM,mBAAmB1jB,GAAA,KAAKD,IAAL,GAAU,GAClD5iC,EAAMu5B,EAAA,KAAKqsB,GAAAmB,IAAL,UAAgB70C,GAC5BirB,EAAA,KAAK8F,GAAAyjB,IAAO,IAAIlvC,EAAKxX,CAAG,EACxBm9B,EAAA,KAAK8F,GAAAyjB,IAAO,IAAI7hD,EAAK7E,CAAG,EACxB,MAAM0X,EAAS6hB,EAAA,KAAKwsB,GAAAiB,IAAL,UAAmB90C,GAClC,OAAAqnB,EAAA,KAAKssB,GAAA+B,IAAL,UAA8BlwC,GAC1BF,GACF+hB,EAAA,KAAK2sB,GAAAyB,IAAL,UAAoCD,EAAQhwC,GAEvC1X,CACR,CACD,sBAAsBmlD,EAAYF,EAASC,EAASE,EAAYC,EAAY,OAC1E,MAAMxgD,EAAM,GAAGogD,CAAO,IAAIC,CAAO,IAAIE,CAAU,IAAIC,CAAU,GAC7D,IAAI1jC,EAAOwb,EAAA,KAAKsoB,GAAAyB,IAAU,IAAI/B,CAAU,EAiBxC,IAhBIxjC,GAAA,YAAAA,EAAM,OAAQ9c,IAGd8c,IACF2V,EAAA3V,EAAK,SAAL,MAAA2V,EAAa,SACb3V,EAAK,IAAM9c,EACX8c,EAAK,IAAM,OACXA,EAAK,OAAS,OAEdA,EAAO,CACL,IAAA9c,EACA,IAAK,OACL,OAAQ,IAChB,EACMs4B,EAAA,KAAKsoB,GAAAyB,IAAU,IAAI/B,EAAYxjC,CAAI,GAEjC,CAACsjC,GAAW,CAACC,GACf,OAAOvjC,EAAK,IAEd,KAAM,CAACwlC,EAAOE,CAAK,EAAI,CAACpC,EAASC,CAAO,EAAE,IAAI3rB,EAAA,KAAK4sB,GAAAiB,IAAQ,KAAK,IAAI,CAAC,EACrE,IAAIS,EAAS,KAAK,MAAM,MAASV,EAAM,CAAC,EAAI,MAASA,EAAM,CAAC,EAAI,MAASA,EAAM,CAAC,CAAC,EAC7EW,EAAS,KAAK,MAAM,MAAST,EAAM,CAAC,EAAI,MAASA,EAAM,CAAC,EAAI,MAASA,EAAM,CAAC,CAAC,EAC7E,CAACU,EAAUC,CAAQ,EAAI,CAAC5C,EAAYC,CAAU,EAAE,IAAI9rB,EAAA,KAAK4sB,GAAAiB,IAAQ,KAAK,IAAI,CAAC,EAC3EU,EAASD,IACX,CAACA,EAAQC,EAAQC,EAAUC,CAAQ,EAAI,CAACF,EAAQD,EAAQG,EAAUD,CAAQ,GAE5E5qB,EAAA,KAAKuoB,GAAA4B,IAAM,MAAM,MAAQ,GACzB,MAAMG,EAAW,CAACQ,EAAIC,EAAIl6B,IAAM,CAC9B,MAAM9gB,EAAM,IAAI,MAAM,GAAG,EACnB4R,GAAQgpC,EAASD,GAAU75B,EAC3Bm6B,GAAWF,EAAK,IAChBG,IAAWF,EAAKD,IAAO,IAAMj6B,GACnC,IAAIq6B,GAAO,EACX,QAASxlD,GAAI,EAAGA,IAAKmrB,EAAGnrB,KAAK,CAC3B,MAAM+rB,GAAI,KAAK,MAAMi5B,EAAShlD,GAAIic,CAAI,EAChCxT,EAAQ68C,GAAWtlD,GAAIulD,GAC7B,QAASE,EAAID,GAAMC,GAAK15B,GAAG05B,IACzBp7C,EAAIo7C,CAAC,EAAIh9C,EAEX+8C,GAAOz5B,GAAI,CACZ,CACD,QAAS/rB,GAAIwlD,GAAMxlD,GAAI,IAAKA,KAC1BqK,EAAIrK,EAAC,EAAIqK,EAAIm7C,GAAO,CAAC,EAEvB,OAAOn7C,EAAI,KAAK,GAAG,CACzB,EACUgF,EAAK,KAAKirB,EAAA,KAAKopB,GAAM,QAAQpB,CAAU,UACvCztC,EAASiK,EAAK,OAAS4X,EAAA,KAAKwsB,GAAAiB,IAAL,UAAmB90C,GAChD,OAAAqnB,EAAA,KAAKusB,GAAA0B,IAAL,UAAwB9vC,GACxB6hB,EAAA,KAAK0sB,GAAAgB,IAAL,UAA+BQ,EAASM,EAAS,CAAC,EAAGC,EAAS,CAAC,EAAG,CAAC,EAAGP,EAASM,EAAS,CAAC,EAAGC,EAAS,CAAC,EAAG,CAAC,EAAGP,EAASM,EAAS,CAAC,EAAGC,EAAS,CAAC,EAAG,CAAC,EAAGtwC,GACpJiK,EAAK,IAAM4X,EAAA,KAAKqsB,GAAAmB,IAAL,UAAgB70C,GACpByP,EAAK,GACb,CACD,QAAQ2jC,EAAU,GAAO,aACnBA,KAAWhuB,EAAA6F,EAAA,KAAKspB,MAAL,MAAAnvB,EAAiB,SAGhCD,EAAA8F,EAAA,KAAKmpB,MAAL,MAAAjvB,EAAa,WAAW,WAAW,SACnCgG,EAAA,KAAKipB,GAAS,OACdpb,EAAA/N,EAAA,KAAKkpB,MAAL,MAAAnb,EAAc,QACd7N,EAAA,KAAKgpB,GAAU,OACflb,EAAAhO,EAAA,KAAKspB,MAAL,MAAAtb,EAAiB,QACjB9N,EAAA,KAAKopB,GAAa,MAClBppB,EAAA,KAAKuF,GAAM,GACZ,CA0CH,CAxTEwjB,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACA7jB,GAAA,YASIK,GAAA,YAAAyjB,GAAM,UAAG,CACX,OAAOvpB,EAAA,KAAKkpB,KAALhpB,EAAA,KAAKgpB,GAAY,IAAI,IAC7B,EACGZ,GAAA,YAAAyB,GAAS,UAAG,CACd,OAAO/pB,EAAA,KAAKspB,KAALppB,EAAA,KAAKopB,GAAe,IAAI,IAChC,EACGf,GAAA,YAAA4B,GAAK,UAAG,CACV,GAAI,CAACnqB,EAAA,KAAKmpB,IAAQ,CAChB,MAAM7nB,EAAMtB,EAAA,KAAKqpB,IAAU,cAAc,KAAK,EACxC,CACJ,MAAAznB,CACD,EAAGN,EACJM,EAAM,WAAa,SACnBA,EAAM,QAAU,SAChBA,EAAM,MAAQA,EAAM,OAAS,EAC7BA,EAAM,SAAW,WACjBA,EAAM,IAAMA,EAAM,KAAO,EACzBA,EAAM,OAAS,GACf,MAAMmE,EAAM/F,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,KAAK,EACxDkI,EAAI,aAAa,QAAS,CAAC,EAC3BA,EAAI,aAAa,SAAU,CAAC,EAC5B7F,EAAA,KAAKipB,GAASnpB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,MAAM,GAC3DyD,EAAI,OAAOyE,CAAG,EACdA,EAAI,OAAO/F,EAAA,KAAKmpB,GAAM,EACtBnpB,EAAA,KAAKqpB,IAAU,KAAK,OAAO/nB,CAAG,CAC/B,CACD,OAAOtB,EAAA,KAAKmpB,GACb,EACDX,GAAA,YAAAmB,GAAa,SAAC9B,EAAM,CAClB,GAAIA,EAAK,SAAW,EAAG,CACrB,MAAMuD,EAAOvD,EAAK,CAAC,EACbliD,EAAS,IAAI,MAAM,GAAG,EAC5B,QAASD,EAAI,EAAGA,EAAI,IAAKA,IACvBC,EAAOD,CAAC,EAAI0lD,EAAK1lD,CAAC,EAAI,IAExB,MAAM0kD,EAAQzkD,EAAO,KAAK,GAAG,EAC7B,MAAO,CAACykD,EAAOA,EAAOA,CAAK,CAC5B,CACD,KAAM,CAACgB,EAAMC,EAAMC,CAAI,EAAIzD,EACrB0D,EAAU,IAAI,MAAM,GAAG,EACvBC,EAAU,IAAI,MAAM,GAAG,EACvBC,EAAU,IAAI,MAAM,GAAG,EAC7B,QAAS/lD,EAAI,EAAGA,EAAI,IAAKA,IACvB6lD,EAAQ7lD,CAAC,EAAI0lD,EAAK1lD,CAAC,EAAI,IACvB8lD,EAAQ9lD,CAAC,EAAI2lD,EAAK3lD,CAAC,EAAI,IACvB+lD,EAAQ/lD,CAAC,EAAI4lD,EAAK5lD,CAAC,EAAI,IAEzB,MAAO,CAAC6lD,EAAQ,KAAK,GAAG,EAAGC,EAAQ,KAAK,GAAG,EAAGC,EAAQ,KAAK,GAAG,CAAC,CAChE,EACDhD,GAAA,YAAAmB,GAAU,SAAC70C,EAAI,CACb,GAAIirB,EAAA,KAAKipB,MAAa,OAAW,CAC/B/oB,EAAA,KAAK+oB,GAAW,IAChB,MAAMpmD,EAAMm9B,EAAA,KAAKqpB,IAAU,IACvBxmD,IAAQm9B,EAAA,KAAKqpB,IAAU,UACrBpyB,GAAap0B,CAAG,EAClBw1B,GAAK,yDAAyD,EAE9D6H,EAAA,KAAK+oB,GAAWpmD,EAAI,MAAM,IAAK,CAAC,EAAE,CAAC,GAGxC,CACD,MAAO,OAAOm9B,EAAA,KAAKipB,GAAQ,IAAIl0C,CAAE,GAClC,EAkMD2zC,GAAA,YAAA+B,GAAwB,SAAClwC,EAAQ,CAC/B,MAAMmxC,EAAgB1rB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,eAAe,EAC5E6tB,EAAc,aAAa,OAAQ,QAAQ,EAC3CA,EAAc,aAAa,SAAU,iDAAiD,EACtFnxC,EAAO,OAAOmxC,CAAa,CAC5B,EACD/C,GAAA,YAAA0B,GAAkB,SAAC9vC,EAAQ,CACzB,MAAMmxC,EAAgB1rB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,eAAe,EAC5E6tB,EAAc,aAAa,OAAQ,QAAQ,EAC3CA,EAAc,aAAa,SAAU,sFAAsF,EAC3HnxC,EAAO,OAAOmxC,CAAa,CAC5B,EACD9C,GAAA,YAAAiB,GAAa,SAAC90C,EAAI,CAChB,MAAMwF,EAASylB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,QAAQ,EAC9D,OAAAtjB,EAAO,aAAa,8BAA+B,MAAM,EACzDA,EAAO,aAAa,KAAMxF,CAAE,EAC5BirB,EAAA,KAAKuoB,GAAA4B,IAAM,OAAO5vC,CAAM,EACjBA,CACR,EACDsuC,GAAA,YAAA8C,GAAa,SAACC,EAAqBC,EAAMzB,EAAO,CAC9C,MAAM0B,EAAS9rB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQguB,CAAI,EAC1DC,EAAO,aAAa,OAAQ,UAAU,EACtCA,EAAO,aAAa,cAAe1B,CAAK,EACxCwB,EAAoB,OAAOE,CAAM,CAClC,EACDhD,GAAA,YAAAgB,GAAyB,SAACiC,EAAQC,EAAQC,EAAQ1xC,EAAQ,CACxD,MAAMqxC,EAAsB5rB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,qBAAqB,EACxFtjB,EAAO,OAAOqxC,CAAmB,EACjCxvB,EAAA,KAAKysB,GAAA8C,IAAL,UAAmBC,EAAqB,UAAWG,GACnD3vB,EAAA,KAAKysB,GAAA8C,IAAL,UAAmBC,EAAqB,UAAWI,GACnD5vB,EAAA,KAAKysB,GAAA8C,IAAL,UAAmBC,EAAqB,UAAWK,EACpD,EACDlD,GAAA,YAAAyB,GAA8B,SAAC0B,EAAQ3xC,EAAQ,CAC7C,MAAMqxC,EAAsB5rB,EAAA,KAAKqpB,IAAU,gBAAgBxrB,GAAQ,qBAAqB,EACxFtjB,EAAO,OAAOqxC,CAAmB,EACjCxvB,EAAA,KAAKysB,GAAA8C,IAAL,UAAmBC,EAAqB,UAAWM,EACpD,EACDlD,GAAA,YAAAiB,GAAO,SAACnpB,EAAO,CACb,OAAAd,EAAA,KAAKuoB,GAAA4B,IAAM,MAAM,MAAQrpB,EAClBD,GAAO,iBAAiBb,EAAA,KAAKuoB,GAAA4B,GAAK,EAAE,iBAAiB,OAAO,CAAC,CACrE,EAMH,MAAMgC,EAA4B,CAChC,YAAY,CACV,QAAAzzB,EAAU,IACd,EAAK,CACD,KAAK,QAAUA,CAChB,CACD,MAAM,MAAM,CACV,SAAAtpB,CACJ,EAAK,CACD,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,kEAAkE,EAEpF,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,kCAAkC,EAEpD,MAAMvM,EAAM,GAAG,KAAK,OAAO,GAAGuM,CAAQ,GACtC,OAAO,KAAK,OAAOvM,CAAG,EAAE,MAAM0lB,GAAU,CACtC,MAAM,IAAI,MAAM,gCAAgC1lB,CAAG,EAAE,CAC3D,CAAK,CACF,CACD,MAAM,OAAOA,EAAK,CAChBy1B,GAAY,kCAAkC,CAC/C,CACH,CACA,MAAM8zB,WAAmCD,EAA4B,CACnE,MAAM,OAAOtpD,EAAK,CAChB,MAAMG,EAAO,MAAM2zB,GAAU9zB,EAAK,aAAa,EAC/C,OAAO,IAAI,WAAWG,CAAI,CAC3B,CACH,CAKA,MAAMqpD,EAAgB,CACpB,YAAY,CACV,QAAA3zB,EAAU,IACd,EAAK,CACD,KAAK,QAAUA,CAChB,CACD,MAAM,MAAM,CACV,SAAAtpB,CACJ,EAAK,CACD,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,sDAAsD,EAExE,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,kCAAkC,EAEpD,MAAMvM,EAAM,GAAG,KAAK,OAAO,GAAGuM,CAAQ,GACtC,OAAO,KAAK,OAAOvM,CAAG,EAAE,MAAM0lB,GAAU,CACtC,MAAM,IAAI,MAAM,gCAAgC1lB,CAAG,EAAE,CAC3D,CAAK,CACF,CACD,MAAM,OAAOA,EAAK,CAChBy1B,GAAY,kCAAkC,CAC/C,CACH,CACA,MAAMg0B,WAAuBD,EAAgB,CAC3C,MAAM,OAAOxpD,EAAK,CAChB,MAAMG,EAAO,MAAM2zB,GAAU9zB,EAAK,aAAa,EAC/C,OAAO,IAAI,WAAWG,CAAI,CAC3B,CACH,CASI00B,IACFW,GAAK,wDAAwD,EAE/D,eAAek0B,GAAqB1pD,EAAK,CAEvC,MAAMG,EAAO,MADF,QAAQ,iBAAiB,IAAI,EAClB,SAAS,SAASH,CAAG,EAC3C,OAAO,IAAI,WAAWG,CAAI,CAC5B,CACA,MAAMwpD,WAA0B5E,EAAkB,CAAE,CACpD,MAAM6E,WAA0BtF,EAAkB,CAChD,cAAcv/C,EAAOR,EAAQ,CAG3B,OAFgB,QAAQ,iBAAiB,QAAQ,EAAE,cAAc,YAAY,GAAG,EACzD,iBAAiB,EAC1B,aAAaQ,EAAOR,CAAM,CACzC,CACH,CACA,MAAMslD,WAA8BlF,EAAsB,CACxD,MAAM,OAAO3kD,EAAK,CAChB,OAAO0pD,GAAqB1pD,CAAG,CAChC,CACH,CACA,MAAM8pD,WAAoCR,EAA4B,CACpE,MAAM,OAAOtpD,EAAK,CAChB,OAAO0pD,GAAqB1pD,CAAG,CAChC,CACH,CACA,MAAM+pD,WAAwBP,EAAgB,CAC5C,MAAM,OAAOxpD,EAAK,CAChB,OAAO0pD,GAAqB1pD,CAAG,CAChC,CACH,CAKA,MAAMgqD,GAAW,CACf,KAAM,OACN,OAAQ,SACR,QAAS,SACX,EACA,SAASC,GAAiBxmD,EAAKymD,EAAM,CACnC,GAAI,CAACA,EACH,OAEF,MAAMnlD,EAAQmlD,EAAK,CAAC,EAAIA,EAAK,CAAC,EACxB3lD,EAAS2lD,EAAK,CAAC,EAAIA,EAAK,CAAC,EACzBC,EAAS,IAAI,OACnBA,EAAO,KAAKD,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGnlD,EAAOR,CAAM,EAC3Cd,EAAI,KAAK0mD,CAAM,CACjB,CACA,MAAMC,EAAmB,CACvB,YAAa,CACX30B,GAAY,sCAAsC,CACnD,CACH,CACA,MAAM40B,WAAkCD,EAAmB,CACzD,YAAYE,EAAI,CACd,QACA,KAAK,MAAQA,EAAG,CAAC,EACjB,KAAK,MAAQA,EAAG,CAAC,EACjB,KAAK,YAAcA,EAAG,CAAC,EACvB,KAAK,IAAMA,EAAG,CAAC,EACf,KAAK,IAAMA,EAAG,CAAC,EACf,KAAK,IAAMA,EAAG,CAAC,EACf,KAAK,IAAMA,EAAG,CAAC,EACf,KAAK,OAAS,IACf,CACD,gBAAgB7mD,EAAK,CACnB,IAAI8mD,EACA,KAAK,QAAU,QACjBA,EAAO9mD,EAAI,qBAAqB,KAAK,IAAI,CAAC,EAAG,KAAK,IAAI,CAAC,EAAG,KAAK,IAAI,CAAC,EAAG,KAAK,IAAI,CAAC,CAAC,EACzE,KAAK,QAAU,WACxB8mD,EAAO9mD,EAAI,qBAAqB,KAAK,IAAI,CAAC,EAAG,KAAK,IAAI,CAAC,EAAG,KAAK,IAAK,KAAK,IAAI,CAAC,EAAG,KAAK,IAAI,CAAC,EAAG,KAAK,GAAG,GAExG,UAAW+mD,KAAa,KAAK,YAC3BD,EAAK,aAAaC,EAAU,CAAC,EAAGA,EAAU,CAAC,CAAC,EAE9C,OAAOD,CACR,CACD,WAAW9mD,EAAKgnD,EAAOC,EAASC,EAAU,CACxC,IAAIC,EACJ,GAAID,IAAaX,GAAS,QAAUW,IAAaX,GAAS,KAAM,CAC9D,MAAMa,EAAYJ,EAAM,QAAQ,0BAA0BE,EAAUpsB,GAAoB96B,CAAG,CAAC,GAAK,CAAC,EAAG,EAAG,EAAG,CAAC,EACtGsB,EAAQ,KAAK,KAAK8lD,EAAU,CAAC,EAAIA,EAAU,CAAC,CAAC,GAAK,EAClDtmD,EAAS,KAAK,KAAKsmD,EAAU,CAAC,EAAIA,EAAU,CAAC,CAAC,GAAK,EACnDC,EAAYL,EAAM,eAAe,UAAU,UAAW1lD,EAAOR,CAAM,EACnEwmD,EAASD,EAAU,QACzBC,EAAO,UAAU,EAAG,EAAGA,EAAO,OAAO,MAAOA,EAAO,OAAO,MAAM,EAChEA,EAAO,UAAS,EAChBA,EAAO,KAAK,EAAG,EAAGA,EAAO,OAAO,MAAOA,EAAO,OAAO,MAAM,EAC3DA,EAAO,UAAU,CAACF,EAAU,CAAC,EAAG,CAACA,EAAU,CAAC,CAAC,EAC7CH,EAAUv0C,GAAK,UAAUu0C,EAAS,CAAC,EAAG,EAAG,EAAG,EAAGG,EAAU,CAAC,EAAGA,EAAU,CAAC,CAAC,CAAC,EAC1EE,EAAO,UAAU,GAAGN,EAAM,aAAa,EACnC,KAAK,QACPM,EAAO,UAAU,GAAG,KAAK,MAAM,EAEjCd,GAAiBc,EAAQ,KAAK,KAAK,EACnCA,EAAO,UAAY,KAAK,gBAAgBA,CAAM,EAC9CA,EAAO,KAAI,EACXH,EAAUnnD,EAAI,cAAcqnD,EAAU,OAAQ,WAAW,EACzD,MAAME,EAAY,IAAI,UAAUN,CAAO,EACvCE,EAAQ,aAAaI,CAAS,CACpC,MACMf,GAAiBxmD,EAAK,KAAK,KAAK,EAChCmnD,EAAU,KAAK,gBAAgBnnD,CAAG,EAEpC,OAAOmnD,CACR,CACH,CACA,SAASK,GAAa9qD,EAAMwL,EAASosB,EAAIC,EAAIC,EAAIizB,EAAIC,EAAIC,EAAI,CAC3D,MAAMC,EAAS1/C,EAAQ,OACrByyB,EAASzyB,EAAQ,OACb/I,EAAQzC,EAAK,KACjBmrD,EAAUnrD,EAAK,MAAQ,EACzB,IAAIorD,EACAF,EAAOtzB,EAAK,CAAC,EAAIszB,EAAOrzB,EAAK,CAAC,IAChCuzB,EAAMxzB,EACNA,EAAKC,EACLA,EAAKuzB,EACLA,EAAML,EACNA,EAAKC,EACLA,EAAKI,GAEHF,EAAOrzB,EAAK,CAAC,EAAIqzB,EAAOpzB,EAAK,CAAC,IAChCszB,EAAMvzB,EACNA,EAAKC,EACLA,EAAKszB,EACLA,EAAMJ,EACNA,EAAKC,EACLA,EAAKG,GAEHF,EAAOtzB,EAAK,CAAC,EAAIszB,EAAOrzB,EAAK,CAAC,IAChCuzB,EAAMxzB,EACNA,EAAKC,EACLA,EAAKuzB,EACLA,EAAML,EACNA,EAAKC,EACLA,EAAKI,GAEP,MAAMtyB,GAAMoyB,EAAOtzB,CAAE,EAAIpsB,EAAQ,SAAWA,EAAQ,OAC9CutB,GAAMmyB,EAAOtzB,EAAK,CAAC,EAAIpsB,EAAQ,SAAWA,EAAQ,OAClDwtB,GAAMkyB,EAAOrzB,CAAE,EAAIrsB,EAAQ,SAAWA,EAAQ,OAC9CytB,GAAMiyB,EAAOrzB,EAAK,CAAC,EAAIrsB,EAAQ,SAAWA,EAAQ,OAClD0tB,GAAMgyB,EAAOpzB,CAAE,EAAItsB,EAAQ,SAAWA,EAAQ,OAC9C2tB,GAAM+xB,EAAOpzB,EAAK,CAAC,EAAItsB,EAAQ,SAAWA,EAAQ,OACxD,GAAIutB,GAAMI,EACR,OAEF,MAAMkyB,EAAMptB,EAAO8sB,CAAE,EACnBO,EAAMrtB,EAAO8sB,EAAK,CAAC,EACnBQ,EAAMttB,EAAO8sB,EAAK,CAAC,EACfS,EAAMvtB,EAAO+sB,CAAE,EACnBS,EAAMxtB,EAAO+sB,EAAK,CAAC,EACnBU,GAAMztB,EAAO+sB,EAAK,CAAC,EACfW,GAAM1tB,EAAOgtB,CAAE,EACnBW,GAAM3tB,EAAOgtB,EAAK,CAAC,EACnBY,GAAM5tB,EAAOgtB,EAAK,CAAC,EACfa,GAAO,KAAK,MAAM/yB,CAAE,EACxBgzB,EAAO,KAAK,MAAM5yB,CAAE,EACtB,IAAI6yB,EAAIC,EAAKC,EAAKC,EACdC,GAAIC,GAAKC,GAAKC,GAClB,QAAS/9B,GAAIs9B,GAAMt9B,IAAKu9B,EAAMv9B,KAAK,CACjC,GAAIA,GAAIyK,EAAI,CACV,MAAMxK,EAAID,GAAIuK,EAAK,GAAKA,EAAKvK,KAAMuK,EAAKE,GACxC+yB,EAAKlzB,GAAMA,EAAKE,GAAMvK,EACtBw9B,EAAMZ,GAAOA,EAAMG,GAAO/8B,EAC1By9B,EAAMZ,GAAOA,EAAMG,GAAOh9B,EAC1B09B,EAAMZ,GAAOA,EAAMG,IAAOj9B,CAChC,KAAW,CACL,IAAIA,EACAD,GAAI2K,EACN1K,EAAI,EACKwK,IAAOE,EAChB1K,EAAI,EAEJA,GAAKwK,EAAKzK,KAAMyK,EAAKE,GAEvB6yB,EAAKhzB,GAAMA,EAAKE,GAAMzK,EACtBw9B,EAAMT,GAAOA,EAAMG,IAAOl9B,EAC1By9B,EAAMT,GAAOA,EAAMG,IAAOn9B,EAC1B09B,EAAMT,IAAOA,GAAMG,IAAOp9B,CAC3B,CACD,IAAIA,EACAD,GAAIuK,EACNtK,EAAI,EACKD,GAAI2K,EACb1K,EAAI,EAEJA,GAAKsK,EAAKvK,KAAMuK,EAAKI,GAEvBizB,GAAKtzB,GAAMA,EAAKI,GAAMzK,EACtB49B,GAAMhB,GAAOA,EAAMM,IAAOl9B,EAC1B69B,GAAMhB,GAAOA,EAAMM,IAAOn9B,EAC1B89B,GAAMhB,GAAOA,EAAMM,IAAOp9B,EAC1B,MAAM+9B,EAAM,KAAK,MAAM,KAAK,IAAIR,EAAII,EAAE,CAAC,EACjCK,EAAM,KAAK,MAAM,KAAK,IAAIT,EAAII,EAAE,CAAC,EACvC,IAAIjE,EAAIgD,EAAU38B,GAAIg+B,EAAM,EAC5B,QAASv+B,EAAIu+B,EAAKv+B,GAAKw+B,EAAKx+B,IAC1BQ,GAAKu9B,EAAK/9B,IAAM+9B,EAAKI,IACjB39B,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAENhsB,EAAM0lD,GAAG,EAAI8D,GAAOA,EAAMI,IAAO59B,EAAI,EACrChsB,EAAM0lD,GAAG,EAAI+D,GAAOA,EAAMI,IAAO79B,EAAI,EACrChsB,EAAM0lD,GAAG,EAAIgE,GAAOA,EAAMI,IAAO99B,EAAI,EACrChsB,EAAM0lD,GAAG,EAAI,GAEhB,CACH,CACA,SAASuE,GAAW1sD,EAAM2sD,EAAQnhD,EAAS,CACzC,MAAMohD,EAAKD,EAAO,OACZE,EAAKF,EAAO,OAClB,IAAIjqD,EAAG05B,EACP,OAAQuwB,EAAO,KAAI,CACjB,IAAK,UACH,MAAMG,EAAiBH,EAAO,eACxBI,EAAO,KAAK,MAAMH,EAAG,OAASE,CAAc,EAAI,EAChDE,EAAOF,EAAiB,EAC9B,IAAKpqD,EAAI,EAAGA,EAAIqqD,EAAMrqD,IAAK,CACzB,IAAIgsB,EAAIhsB,EAAIoqD,EACZ,QAAS3E,EAAI,EAAGA,EAAI6E,EAAM7E,IAAKz5B,IAC7Bo8B,GAAa9qD,EAAMwL,EAASohD,EAAGl+B,CAAC,EAAGk+B,EAAGl+B,EAAI,CAAC,EAAGk+B,EAAGl+B,EAAIo+B,CAAc,EAAGD,EAAGn+B,CAAC,EAAGm+B,EAAGn+B,EAAI,CAAC,EAAGm+B,EAAGn+B,EAAIo+B,CAAc,CAAC,EAC9GhC,GAAa9qD,EAAMwL,EAASohD,EAAGl+B,EAAIo+B,EAAiB,CAAC,EAAGF,EAAGl+B,EAAI,CAAC,EAAGk+B,EAAGl+B,EAAIo+B,CAAc,EAAGD,EAAGn+B,EAAIo+B,EAAiB,CAAC,EAAGD,EAAGn+B,EAAI,CAAC,EAAGm+B,EAAGn+B,EAAIo+B,CAAc,CAAC,CAE3J,CACD,MACF,IAAK,YACH,IAAKpqD,EAAI,EAAG05B,EAAKwwB,EAAG,OAAQlqD,EAAI05B,EAAI15B,GAAK,EACvCooD,GAAa9qD,EAAMwL,EAASohD,EAAGlqD,CAAC,EAAGkqD,EAAGlqD,EAAI,CAAC,EAAGkqD,EAAGlqD,EAAI,CAAC,EAAGmqD,EAAGnqD,CAAC,EAAGmqD,EAAGnqD,EAAI,CAAC,EAAGmqD,EAAGnqD,EAAI,CAAC,CAAC,EAEtF,MACF,QACE,MAAM,IAAI,MAAM,gBAAgB,CACnC,CACH,CACA,MAAMuqD,WAA2BhD,EAAmB,CAClD,YAAYE,EAAI,CACd,QACA,KAAK,QAAUA,EAAG,CAAC,EACnB,KAAK,QAAUA,EAAG,CAAC,EACnB,KAAK,SAAWA,EAAG,CAAC,EACpB,KAAK,QAAUA,EAAG,CAAC,EACnB,KAAK,MAAQA,EAAG,CAAC,EACjB,KAAK,YAAcA,EAAG,CAAC,EACvB,KAAK,OAAS,IACf,CACD,kBAAkB+C,EAAeC,EAAiBC,EAAgB,CAIhE,MAAM/xB,EAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,CAAC,EACpCC,EAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,CAAC,EACpC+xB,EAAc,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC,EAAIhyB,EAC3CiyB,EAAe,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC,EAAIhyB,EAC5C12B,EAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIyoD,EAAcH,EAAc,CAAC,EAAI,GAAc,CAAC,EAAG,GAAgB,EACvG9oD,EAAS,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIkpD,EAAeJ,EAAc,CAAC,EAAI,GAAc,CAAC,EAAG,GAAgB,EACzGK,EAASF,EAAczoD,EACvB4oD,EAASF,EAAelpD,EACxBoH,EAAU,CACd,OAAQ,KAAK,QACb,OAAQ,KAAK,QACb,QAAS,CAAC6vB,EACV,QAAS,CAACC,EACV,OAAQ,EAAIiyB,EACZ,OAAQ,EAAIC,CAClB,EACUC,EAAc7oD,EAAQ,EAAc,EACpC8oD,EAAetpD,EAAS,EAAc,EACtCumD,EAAYyC,EAAe,UAAU,OAAQK,EAAaC,CAAY,EACtE9C,EAASD,EAAU,QACnB3qD,EAAO4qD,EAAO,gBAAgBhmD,EAAOR,CAAM,EACjD,GAAI+oD,EAAiB,CACnB,MAAM1qD,EAAQzC,EAAK,KACnB,QAAS0C,EAAI,EAAG05B,GAAK35B,EAAM,OAAQC,EAAI05B,GAAI15B,GAAK,EAC9CD,EAAMC,CAAC,EAAIyqD,EAAgB,CAAC,EAC5B1qD,EAAMC,EAAI,CAAC,EAAIyqD,EAAgB,CAAC,EAChC1qD,EAAMC,EAAI,CAAC,EAAIyqD,EAAgB,CAAC,EAChC1qD,EAAMC,EAAI,CAAC,EAAI,GAElB,CACD,UAAWiqD,KAAU,KAAK,SACxBD,GAAW1sD,EAAM2sD,EAAQnhD,CAAO,EAElC,OAAAo/C,EAAO,aAAa5qD,EAAM,EAAa,CAAW,EAE3C,CACL,OAFa2qD,EAAU,OAGvB,QAAStvB,EAAU,EAAckyB,EACjC,QAASjyB,EAAU,EAAckyB,EACjC,OAAAD,EACA,OAAAC,CACN,CACG,CACD,WAAWlqD,EAAKgnD,EAAOC,EAASC,EAAU,CACxCV,GAAiBxmD,EAAK,KAAK,KAAK,EAChC,IAAI63B,EACJ,GAAIqvB,IAAaX,GAAS,QACxB1uB,EAAQnlB,GAAK,8BAA8BooB,GAAoB96B,CAAG,CAAC,UAEnE63B,EAAQnlB,GAAK,8BAA8Bs0C,EAAM,aAAa,EAC1D,KAAK,OAAQ,CACf,MAAMqD,EAAc33C,GAAK,8BAA8B,KAAK,MAAM,EAClEmlB,EAAQ,CAACA,EAAM,CAAC,EAAIwyB,EAAY,CAAC,EAAGxyB,EAAM,CAAC,EAAIwyB,EAAY,CAAC,CAAC,CAC9D,CAEH,MAAMC,EAAyB,KAAK,kBAAkBzyB,EAAOqvB,IAAaX,GAAS,QAAU,KAAO,KAAK,YAAaS,EAAM,cAAc,EAC1I,OAAIE,IAAaX,GAAS,UACxBvmD,EAAI,aAAa,GAAGgnD,EAAM,aAAa,EACnC,KAAK,QACPhnD,EAAI,UAAU,GAAG,KAAK,MAAM,GAGhCA,EAAI,UAAUsqD,EAAuB,QAASA,EAAuB,OAAO,EAC5EtqD,EAAI,MAAMsqD,EAAuB,OAAQA,EAAuB,MAAM,EAC/DtqD,EAAI,cAAcsqD,EAAuB,OAAQ,WAAW,CACpE,CACH,CACA,MAAMC,WAA4B5D,EAAmB,CACnD,YAAa,CACX,MAAO,SACR,CACH,CACA,SAAS6D,GAAkB3D,EAAI,CAC7B,OAAQA,EAAG,CAAC,EAAC,CACX,IAAK,cACH,OAAO,IAAID,GAA0BC,CAAE,EACzC,IAAK,OACH,OAAO,IAAI8C,GAAmB9C,CAAE,EAClC,IAAK,QACH,OAAO,IAAI0D,EACd,CACD,MAAM,IAAI,MAAM,oBAAoB1D,EAAG,CAAC,CAAC,EAAE,CAC7C,CACA,MAAM4D,GAAY,CAChB,QAAS,EACT,UAAW,CACb,EACMC,GAAN,MAAMA,EAAc,CAElB,YAAY7D,EAAIrsB,EAAOx6B,EAAK2qD,EAAuBC,EAAe,CAChE,KAAK,aAAe/D,EAAG,CAAC,EACxB,KAAK,OAASA,EAAG,CAAC,EAClB,KAAK,KAAOA,EAAG,CAAC,EAChB,KAAK,MAAQA,EAAG,CAAC,EACjB,KAAK,MAAQA,EAAG,CAAC,EACjB,KAAK,UAAYA,EAAG,CAAC,EACrB,KAAK,WAAaA,EAAG,CAAC,EACtB,KAAK,MAAQrsB,EACb,KAAK,IAAMx6B,EACX,KAAK,sBAAwB2qD,EAC7B,KAAK,cAAgBC,CACtB,CACD,oBAAoB5D,EAAO,CACzB,KAAM,CACJ,KAAAP,EACA,aAAAoE,EACA,UAAAC,EACA,WAAAC,EACA,MAAAvwB,EACA,sBAAAmwB,CACD,EAAG,KACJ,GAAI,CACF,MAAAK,EACA,MAAAC,CACD,EAAG,KACJD,EAAQ,KAAK,IAAIA,CAAK,EACtBC,EAAQ,KAAK,IAAIA,CAAK,EACtB/sC,GAAK,eAAiB6sC,CAAU,EAChC,MAAMz1B,EAAKmxB,EAAK,CAAC,EACflxB,EAAKkxB,EAAK,CAAC,EACXjxB,EAAKixB,EAAK,CAAC,EACXhxB,EAAKgxB,EAAK,CAAC,EACPnlD,EAAQk0B,EAAKF,EACbx0B,EAAS20B,EAAKF,EACd80B,EAAc33C,GAAK,8BAA8B,KAAK,MAAM,EAC5Dw4C,EAAiBx4C,GAAK,8BAA8B,KAAK,aAAa,EACtEy4C,EAAiBd,EAAY,CAAC,EAAIa,EAAe,CAAC,EAClDE,EAAiBf,EAAY,CAAC,EAAIa,EAAe,CAAC,EACxD,IAAIG,EAAc/pD,EAChBgqD,EAAexqD,EACfyqD,EAAqB,GACrBC,EAAmB,GACrB,MAAMC,GAAc,KAAK,KAAKT,EAAQG,CAAc,EAC9CO,GAAc,KAAK,KAAKT,EAAQG,CAAc,EAC9CO,GAAe,KAAK,KAAKrqD,EAAQ6pD,CAAc,EAC/CS,GAAgB,KAAK,KAAK9qD,EAASsqD,CAAc,EACnDK,IAAeE,GACjBN,EAAcL,EAEdO,EAAqB,GAEnBG,IAAeE,GACjBN,EAAeL,EAEfO,EAAmB,GAErB,MAAMK,GAAO,KAAK,gBAAgBR,EAAa,KAAK,IAAI,OAAO,MAAOF,CAAc,EAC9EW,EAAO,KAAK,gBAAgBR,EAAc,KAAK,IAAI,OAAO,OAAQF,CAAc,EAChF/D,EAAYL,EAAM,eAAe,UAAU,UAAW6E,GAAK,KAAMC,EAAK,IAAI,EAC1ExE,EAASD,EAAU,QACnB0E,EAAWpB,EAAsB,qBAAqBrD,CAAM,EAWlE,GAVAyE,EAAS,WAAa/E,EAAM,WAC5B,KAAK,+BAA+B+E,EAAUjB,EAAWtwB,CAAK,EAC9D8sB,EAAO,UAAU,CAACuE,GAAK,MAAQv2B,EAAI,CAACw2B,EAAK,MAAQv2B,CAAE,EACnDw2B,EAAS,UAAUF,GAAK,MAAO,EAAG,EAAGC,EAAK,MAAO,EAAG,CAAC,EACrDxE,EAAO,KAAI,EACX,KAAK,SAASyE,EAAUz2B,EAAIC,EAAIC,EAAIC,CAAE,EACtCs2B,EAAS,cAAgBjxB,GAAoBixB,EAAS,GAAG,EACzDA,EAAS,oBAAoBlB,CAAY,EACzCkB,EAAS,WAAU,EACnBzE,EAAO,QAAO,EACViE,GAAsBC,EAAkB,CAC1C,MAAM5sD,EAAQyoD,EAAU,OACpBkE,IACFF,EAAcL,GAEZQ,IACFF,EAAeL,GAEjB,MAAMe,GAAQ,KAAK,gBAAgBX,EAAa,KAAK,IAAI,OAAO,MAAOF,CAAc,EAC/Ec,GAAQ,KAAK,gBAAgBX,EAAc,KAAK,IAAI,OAAO,OAAQF,CAAc,EACjFc,GAAQF,GAAM,KACdG,GAAQF,GAAM,KACdG,GAAapF,EAAM,eAAe,UAAU,qBAAsBkF,GAAOC,EAAK,EAC9EE,EAAUD,GAAW,QACrBtzB,EAAKyyB,EAAqB,KAAK,MAAMjqD,EAAQ0pD,CAAK,EAAI,EACtDsB,EAAKd,EAAmB,KAAK,MAAM1qD,EAASmqD,CAAK,EAAI,EAC3D,QAAS7rD,EAAI,EAAGA,GAAK05B,EAAI15B,IACvB,QAASylD,EAAI,EAAGA,GAAKyH,EAAIzH,IACvBwH,EAAQ,UAAUztD,EAAOstD,GAAQ9sD,EAAG+sD,GAAQtH,EAAGqH,GAAOC,GAAO,EAAG,EAAGD,GAAOC,EAAK,EAGnF,MAAO,CACL,OAAQC,GAAW,OACnB,OAAQJ,GAAM,MACd,OAAQC,GAAM,MACd,QAAS32B,EACT,QAASC,CACjB,CACK,CACD,MAAO,CACL,OAAQ8xB,EAAU,OAClB,OAAQwE,GAAK,MACb,OAAQC,EAAK,MACb,QAASx2B,EACT,QAASC,CACf,CACG,CACD,gBAAgBla,EAAMkxC,EAAgB10B,EAAO,CAC3C,MAAMyI,EAAU,KAAK,IAAIoqB,GAAc,iBAAkB6B,CAAc,EACvE,IAAIhkD,EAAO,KAAK,KAAK8S,EAAOwc,CAAK,EACjC,OAAItvB,GAAQ+3B,EACV/3B,EAAO+3B,EAEPzI,EAAQtvB,EAAO8S,EAEV,CACL,MAAAwc,EACA,KAAAtvB,CACN,CACG,CACD,SAASwjD,EAAUz2B,EAAIC,EAAIC,EAAIC,EAAI,CACjC,MAAM+2B,EAAYh3B,EAAKF,EACjBm3B,EAAah3B,EAAKF,EACxBw2B,EAAS,IAAI,KAAKz2B,EAAIC,EAAIi3B,EAAWC,CAAU,EAC/CV,EAAS,QAAQ,iBAAiBjxB,GAAoBixB,EAAS,GAAG,EAAG,CAACz2B,EAAIC,EAAIC,EAAIC,CAAE,CAAC,EACrFs2B,EAAS,KAAI,EACbA,EAAS,QAAO,CACjB,CACD,+BAA+BA,EAAUjB,EAAWtwB,EAAO,CACzD,MAAMtyB,EAAU6jD,EAAS,IACvB3uC,EAAU2uC,EAAS,QACrB,OAAQjB,EAAS,CACf,KAAKL,GAAU,QACb,MAAMzqD,EAAM,KAAK,IACjBkI,EAAQ,UAAYlI,EAAI,UACxBkI,EAAQ,YAAclI,EAAI,YAC1Bod,EAAQ,UAAYpd,EAAI,UACxBod,EAAQ,YAAcpd,EAAI,YAC1B,MACF,KAAKyqD,GAAU,UACb,MAAMiC,EAAWh6C,GAAK,aAAa8nB,EAAM,CAAC,EAAGA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAC/DtyB,EAAQ,UAAYwkD,EACpBxkD,EAAQ,YAAcwkD,EACtBtvC,EAAQ,UAAYsvC,EACpBtvC,EAAQ,YAAcsvC,EACtB,MACF,QACE,MAAM,IAAI55B,GAAY,2BAA2Bg4B,CAAS,EAAE,CAC/D,CACF,CACD,WAAW9qD,EAAKgnD,EAAOC,EAASC,EAAU,CACxC,IAAIyF,EAAS1F,EACTC,IAAaX,GAAS,UACxBoG,EAASj6C,GAAK,UAAUi6C,EAAQ3F,EAAM,aAAa,EAC/C,KAAK,SACP2F,EAASj6C,GAAK,UAAUi6C,EAAQ,KAAK,MAAM,IAG/C,MAAMrC,EAAyB,KAAK,oBAAoBtD,CAAK,EAC7D,IAAIO,EAAY,IAAI,UAAUoF,CAAM,EACpCpF,EAAYA,EAAU,UAAU+C,EAAuB,QAASA,EAAuB,OAAO,EAC9F/C,EAAYA,EAAU,MAAM,EAAI+C,EAAuB,OAAQ,EAAIA,EAAuB,MAAM,EAChG,MAAMnD,EAAUnnD,EAAI,cAAcsqD,EAAuB,OAAQ,QAAQ,EACzE,OAAAnD,EAAQ,aAAaI,CAAS,EACvBJ,CACR,CACH,EAzKElmD,GADIypD,GACG,mBAAmB,KAD5B,IAAMkC,GAANlC,GAuLA,SAASmC,GAA2B,CAClC,IAAAl3C,EACA,OAAAm3C,EAAS,EACT,KAAAloD,EACA,MAAAtD,EACA,OAAAR,EACA,cAAAisD,EAAgB,WAChB,cAAAC,EAAgB,EAClB,EAAG,CACD,MAAMC,EAAQn+B,GAAiB,eAAiB,WAAa,IACvD,CAACo+B,EAAaC,CAAU,EAAIH,EAAgB,CAACD,EAAeE,CAAK,EAAI,CAACA,EAAOF,CAAa,EAC1FK,EAAgB9rD,GAAS,EACzB+rD,EAAiB/rD,EAAQ,EACzBgsD,EAAY33C,EAAI,OACtB/Q,EAAO,IAAI,YAAYA,EAAK,MAAM,EAClC,IAAI2oD,EAAU,EACd,QAASnuD,EAAI,EAAGA,EAAI0B,EAAQ1B,IAAK,CAC/B,UAAWujB,EAAMmqC,EAASM,EAAeN,EAASnqC,EAAKmqC,IAAU,CAC/D,MAAMU,EAAOV,EAASQ,EAAY33C,EAAIm3C,CAAM,EAAI,IAChDloD,EAAK2oD,GAAS,EAAIC,EAAO,IAAaL,EAAaD,EACnDtoD,EAAK2oD,GAAS,EAAIC,EAAO,GAAYL,EAAaD,EAClDtoD,EAAK2oD,GAAS,EAAIC,EAAO,GAAWL,EAAaD,EACjDtoD,EAAK2oD,GAAS,EAAIC,EAAO,GAAUL,EAAaD,EAChDtoD,EAAK2oD,GAAS,EAAIC,EAAO,EAASL,EAAaD,EAC/CtoD,EAAK2oD,GAAS,EAAIC,EAAO,EAAQL,EAAaD,EAC9CtoD,EAAK2oD,GAAS,EAAIC,EAAO,EAAOL,EAAaD,EAC7CtoD,EAAK2oD,GAAS,EAAIC,EAAO,EAAML,EAAaD,CAC7C,CACD,GAAIG,IAAmB,EACrB,SAEF,MAAMG,EAAOV,EAASQ,EAAY33C,EAAIm3C,GAAQ,EAAI,IAClD,QAASjI,EAAI,EAAGA,EAAIwI,EAAgBxI,IAClCjgD,EAAK2oD,GAAS,EAAIC,EAAO,GAAK,EAAI3I,EAAIsI,EAAaD,CAEtD,CACD,MAAO,CACL,OAAAJ,EACA,QAAAS,CACJ,CACA,CA8DA,MAAME,GAAgB,GAChBC,GAAgB,IAChBC,GAAiB,GACjBC,GAAkB,GAClBC,GAAsB,IACtBC,GAAoB,GAC1B,SAASC,GAAwB/tD,EAAKguD,EAAS,CAC7C,GAAIhuD,EAAI,iBACN,MAAM,IAAI,MAAM,2CAA2C,EAE7DA,EAAI,eAAiBA,EAAI,KACzBA,EAAI,kBAAoBA,EAAI,QAC5BA,EAAI,iBAAmBA,EAAI,OAC3BA,EAAI,gBAAkBA,EAAI,MAC1BA,EAAI,oBAAsBA,EAAI,UAC9BA,EAAI,oBAAsBA,EAAI,UAC9BA,EAAI,uBAAyBA,EAAI,aACjCA,EAAI,yBAA2BA,EAAI,eACnCA,EAAI,eAAiBA,EAAI,KACzBA,EAAI,iBAAmBA,EAAI,OAC3BA,EAAI,iBAAmBA,EAAI,OAC3BA,EAAI,wBAA0BA,EAAI,cAClCA,EAAI,eAAiBA,EAAI,KACzBA,EAAI,oBAAsBA,EAAI,UAC9BA,EAAI,oBAAsBA,EAAI,UAC9BA,EAAI,iBAAmB,IAAM,CAC3BA,EAAI,KAAOA,EAAI,eACfA,EAAI,QAAUA,EAAI,kBAClBA,EAAI,OAASA,EAAI,iBACjBA,EAAI,MAAQA,EAAI,gBAChBA,EAAI,UAAYA,EAAI,oBACpBA,EAAI,UAAYA,EAAI,oBACpBA,EAAI,aAAeA,EAAI,uBACvBA,EAAI,eAAiBA,EAAI,yBACzBA,EAAI,KAAOA,EAAI,eACfA,EAAI,OAASA,EAAI,iBACjBA,EAAI,OAASA,EAAI,iBACjBA,EAAI,cAAgBA,EAAI,wBACxBA,EAAI,KAAOA,EAAI,eACfA,EAAI,UAAYA,EAAI,oBACpBA,EAAI,UAAYA,EAAI,oBACpB,OAAOA,EAAI,gBACf,EACEA,EAAI,KAAO,UAAmB,CAC5BguD,EAAQ,KAAI,EACZ,KAAK,eAAc,CACvB,EACEhuD,EAAI,QAAU,UAAsB,CAClCguD,EAAQ,QAAO,EACf,KAAK,kBAAiB,CAC1B,EACEhuD,EAAI,UAAY,SAAsB2qB,EAAGO,EAAG,CAC1C8iC,EAAQ,UAAUrjC,EAAGO,CAAC,EACtB,KAAK,oBAAoBP,EAAGO,CAAC,CACjC,EACElrB,EAAI,MAAQ,SAAkB2qB,EAAGO,EAAG,CAClC8iC,EAAQ,MAAMrjC,EAAGO,CAAC,EAClB,KAAK,gBAAgBP,EAAGO,CAAC,CAC7B,EACElrB,EAAI,UAAY,SAAsBkE,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,EAAG,CACtD2oD,EAAQ,UAAU9pD,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,EAClC,KAAK,oBAAoBnB,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,CAC7C,EACErF,EAAI,aAAe,SAAyBkE,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,EAAG,CAC5D2oD,EAAQ,aAAa9pD,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,EACrC,KAAK,uBAAuBnB,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,CAChD,EACErF,EAAI,eAAiB,UAA6B,CAChDguD,EAAQ,eAAc,EACtB,KAAK,yBAAwB,CACjC,EACEhuD,EAAI,OAAS,SAAmBk3C,EAAO,CACrC8W,EAAQ,OAAO9W,CAAK,EACpB,KAAK,iBAAiBA,CAAK,CAC/B,EACEl3C,EAAI,KAAO,SAAmB88C,EAAM,CAClCkR,EAAQ,KAAKlR,CAAI,EACjB,KAAK,eAAeA,CAAI,CAC5B,EACE98C,EAAI,OAAS,SAAU2qB,EAAGO,EAAG,CAC3B8iC,EAAQ,OAAOrjC,EAAGO,CAAC,EACnB,KAAK,iBAAiBP,EAAGO,CAAC,CAC9B,EACElrB,EAAI,OAAS,SAAU2qB,EAAGO,EAAG,CAC3B8iC,EAAQ,OAAOrjC,EAAGO,CAAC,EACnB,KAAK,iBAAiBP,EAAGO,CAAC,CAC9B,EACElrB,EAAI,cAAgB,SAAUiuD,EAAMC,EAAMC,EAAMC,EAAMzjC,EAAGO,EAAG,CAC1D8iC,EAAQ,cAAcC,EAAMC,EAAMC,EAAMC,EAAMzjC,EAAGO,CAAC,EAClD,KAAK,wBAAwB+iC,EAAMC,EAAMC,EAAMC,EAAMzjC,EAAGO,CAAC,CAC7D,EACElrB,EAAI,KAAO,SAAU2qB,EAAGO,EAAG5pB,EAAOR,EAAQ,CACxCktD,EAAQ,KAAKrjC,EAAGO,EAAG5pB,EAAOR,CAAM,EAChC,KAAK,eAAe6pB,EAAGO,EAAG5pB,EAAOR,CAAM,CAC3C,EACEd,EAAI,UAAY,UAAY,CAC1BguD,EAAQ,UAAS,EACjB,KAAK,oBAAmB,CAC5B,EACEhuD,EAAI,UAAY,UAAY,CAC1BguD,EAAQ,UAAS,EACjB,KAAK,oBAAmB,CAC5B,CACA,CACA,MAAMK,EAAe,CACnB,YAAYC,EAAe,CACzB,KAAK,cAAgBA,EACrB,KAAK,MAAQ,OAAO,OAAO,IAAI,CAChC,CACD,UAAU7/C,EAAInN,EAAOR,EAAQ,CAC3B,IAAIytD,EACJ,OAAI,KAAK,MAAM9/C,CAAE,IAAM,QACrB8/C,EAAc,KAAK,MAAM9/C,CAAE,EAC3B,KAAK,cAAc,MAAM8/C,EAAajtD,EAAOR,CAAM,IAEnDytD,EAAc,KAAK,cAAc,OAAOjtD,EAAOR,CAAM,EACrD,KAAK,MAAM2N,CAAE,EAAI8/C,GAEZA,CACR,CACD,OAAO9/C,EAAI,CACT,OAAO,KAAK,MAAMA,CAAE,CACrB,CACD,OAAQ,CACN,UAAWA,KAAM,KAAK,MAAO,CAC3B,MAAM8/C,EAAc,KAAK,MAAM9/C,CAAE,EACjC,KAAK,cAAc,QAAQ8/C,CAAW,EACtC,OAAO,KAAK,MAAM9/C,CAAE,CACrB,CACF,CACH,CACA,SAAS+/C,GAAyBxuD,EAAKyuD,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAAO,CACjG,KAAM,CAAC/qD,EAAGC,EAAGuI,EAAGN,EAAGy/B,EAAIC,CAAE,EAAIhR,GAAoB96B,CAAG,EACpD,GAAImE,IAAM,GAAKuI,IAAM,EAAG,CACtB,MAAMwiD,EAAMJ,EAAQ5qD,EAAI2nC,EAClBsjB,EAAO,KAAK,MAAMD,CAAG,EACrBE,EAAML,EAAQ3iD,EAAI0/B,EAClBujB,EAAO,KAAK,MAAMD,CAAG,EACrBE,GAAOR,EAAQE,GAAS9qD,EAAI2nC,EAC5B0jB,EAAS,KAAK,IAAI,KAAK,MAAMD,CAAG,EAAIH,CAAI,GAAK,EAC7CK,IAAOT,EAAQE,GAAS7iD,EAAI0/B,EAC5B2jB,GAAU,KAAK,IAAI,KAAK,MAAMD,EAAG,EAAIH,CAAI,GAAK,EACpD,OAAArvD,EAAI,aAAa,KAAK,KAAKkE,CAAC,EAAG,EAAG,EAAG,KAAK,KAAKkI,CAAC,EAAG+iD,EAAME,CAAI,EAC7DrvD,EAAI,UAAUyuD,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGU,EAAQE,EAAO,EACnEzvD,EAAI,aAAakE,EAAGC,EAAGuI,EAAGN,EAAGy/B,EAAIC,CAAE,EAC5B,CAACyjB,EAAQE,EAAO,CACxB,CACD,GAAIvrD,IAAM,GAAKkI,IAAM,EAAG,CACtB,MAAM8iD,EAAMH,EAAQriD,EAAIm/B,EAClBsjB,EAAO,KAAK,MAAMD,CAAG,EACrBE,EAAMN,EAAQ3qD,EAAI2nC,EAClBujB,EAAO,KAAK,MAAMD,CAAG,EACrBE,GAAOP,EAAQE,GAASviD,EAAIm/B,EAC5B0jB,EAAS,KAAK,IAAI,KAAK,MAAMD,CAAG,EAAIH,CAAI,GAAK,EAC7CK,IAAOV,EAAQE,GAAS7qD,EAAI2nC,EAC5B2jB,GAAU,KAAK,IAAI,KAAK,MAAMD,EAAG,EAAIH,CAAI,GAAK,EACpD,OAAArvD,EAAI,aAAa,EAAG,KAAK,KAAKmE,CAAC,EAAG,KAAK,KAAKuI,CAAC,EAAG,EAAGyiD,EAAME,CAAI,EAC7DrvD,EAAI,UAAUyuD,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGY,GAASF,CAAM,EACnEvvD,EAAI,aAAakE,EAAGC,EAAGuI,EAAGN,EAAGy/B,EAAIC,CAAE,EAC5B,CAAC2jB,GAASF,CAAM,CACxB,CACDvvD,EAAI,UAAUyuD,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,CAAK,EACxE,MAAMhF,EAAS,KAAK,MAAM/lD,EAAGC,CAAC,EACxB+lD,EAAS,KAAK,MAAMx9C,EAAGN,CAAC,EAC9B,MAAO,CAAC69C,EAAS+E,EAAO9E,EAAS+E,CAAK,CACxC,CACA,SAASS,GAAkBC,EAAS,CAClC,KAAM,CACJ,MAAAruD,EACA,OAAAR,CACD,EAAG6uD,EACJ,GAAIruD,EAAQusD,IAAuB/sD,EAAS+sD,GAC1C,OAAO,KAET,MAAM+B,EAAyB,IACzBC,EAAc,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAC9EC,EAASxuD,EAAQ,EACvB,IAAIyuD,EAAS,IAAI,WAAWD,GAAUhvD,EAAS,EAAE,EAC7C1B,EAAGylD,EAAGmL,EACV,MAAMC,EAAW3uD,EAAQ,EAAI,GAC7B,IAAI5E,EAAO,IAAI,WAAWuzD,EAAWnvD,CAAM,EACzCkN,EAAM,EACR,UAAWw/C,KAAQmC,EAAQ,KAAM,CAC/B,IAAIO,EAAO,IACX,KAAOA,EAAO,GACZxzD,EAAKsR,GAAK,EAAIw/C,EAAO0C,EAAO,EAAI,IAChCA,IAAS,CAEZ,CACD,IAAI7T,EAAQ,EAMZ,IALAruC,EAAM,EACFtR,EAAKsR,CAAG,IAAM,IAChB+hD,EAAO,CAAC,EAAI,EACZ,EAAE1T,GAECwI,EAAI,EAAGA,EAAIvjD,EAAOujD,IACjBnoD,EAAKsR,CAAG,IAAMtR,EAAKsR,EAAM,CAAC,IAC5B+hD,EAAOlL,CAAC,EAAInoD,EAAKsR,CAAG,EAAI,EAAI,EAC5B,EAAEquC,GAEJruC,IAMF,IAJItR,EAAKsR,CAAG,IAAM,IAChB+hD,EAAOlL,CAAC,EAAI,EACZ,EAAExI,GAECj9C,EAAI,EAAGA,EAAI0B,EAAQ1B,IAAK,CAC3B4O,EAAM5O,EAAI6wD,EACVD,EAAK5wD,EAAI0wD,EACLpzD,EAAKsR,EAAMiiD,CAAQ,IAAMvzD,EAAKsR,CAAG,IACnC+hD,EAAOC,CAAE,EAAItzD,EAAKsR,CAAG,EAAI,EAAI,EAC7B,EAAEquC,GAEJ,IAAI8T,GAAOzzD,EAAKsR,CAAG,EAAI,EAAI,IAAMtR,EAAKsR,EAAMiiD,CAAQ,EAAI,EAAI,GAC5D,IAAKpL,EAAI,EAAGA,EAAIvjD,EAAOujD,IACrBsL,GAAOA,GAAO,IAAMzzD,EAAKsR,EAAM,CAAC,EAAI,EAAI,IAAMtR,EAAKsR,EAAMiiD,EAAW,CAAC,EAAI,EAAI,GACzEJ,EAAYM,CAAG,IACjBJ,EAAOC,EAAKnL,CAAC,EAAIgL,EAAYM,CAAG,EAChC,EAAE9T,GAEJruC,IAMF,GAJItR,EAAKsR,EAAMiiD,CAAQ,IAAMvzD,EAAKsR,CAAG,IACnC+hD,EAAOC,EAAKnL,CAAC,EAAInoD,EAAKsR,CAAG,EAAI,EAAI,EACjC,EAAEquC,GAEAA,EAAQuT,EACV,OAAO,IAEV,CAOD,IANA5hD,EAAMiiD,GAAYnvD,EAAS,GAC3BkvD,EAAK5wD,EAAI0wD,EACLpzD,EAAKsR,CAAG,IAAM,IAChB+hD,EAAOC,CAAE,EAAI,EACb,EAAE3T,GAECwI,EAAI,EAAGA,EAAIvjD,EAAOujD,IACjBnoD,EAAKsR,CAAG,IAAMtR,EAAKsR,EAAM,CAAC,IAC5B+hD,EAAOC,EAAKnL,CAAC,EAAInoD,EAAKsR,CAAG,EAAI,EAAI,EACjC,EAAEquC,GAEJruC,IAMF,GAJItR,EAAKsR,CAAG,IAAM,IAChB+hD,EAAOC,EAAKnL,CAAC,EAAI,EACjB,EAAExI,GAEAA,EAAQuT,EACV,OAAO,KAET,MAAMQ,EAAQ,IAAI,WAAW,CAAC,EAAGN,EAAQ,GAAI,EAAG,CAACA,EAAQ,EAAG,EAAG,EAAG,CAAC,CAAC,EAC9Dj7C,EAAO,IAAI,OACjB,IAAKzV,EAAI,EAAGi9C,GAASj9C,GAAK0B,EAAQ1B,IAAK,CACrC,IAAIsG,EAAItG,EAAI0wD,EACZ,MAAMt2B,EAAM9zB,EAAIpE,EAChB,KAAOoE,EAAI8zB,GAAO,CAACu2B,EAAOrqD,CAAC,GACzBA,IAEF,GAAIA,IAAM8zB,EACR,SAEF3kB,EAAK,OAAOnP,EAAIoqD,EAAQ1wD,CAAC,EACzB,MAAMixD,EAAK3qD,EACX,IAAI4D,EAAOymD,EAAOrqD,CAAC,EACnB,EAAG,CACD,MAAM2V,EAAO+0C,EAAM9mD,CAAI,EACvB,GACE5D,GAAK2V,QACE,CAAC00C,EAAOrqD,CAAC,GAClB,MAAM4qD,EAAKP,EAAOrqD,CAAC,EACf4qD,IAAO,GAAKA,IAAO,IACrBhnD,EAAOgnD,EACPP,EAAOrqD,CAAC,EAAI,IAEZ4D,EAAOgnD,EAAK,GAAOhnD,GAAQ,EAC3BymD,EAAOrqD,CAAC,GAAK4D,GAAQ,EAAIA,GAAQ,GAEnCuL,EAAK,OAAOnP,EAAIoqD,EAAQpqD,EAAIoqD,EAAS,CAAC,EACjCC,EAAOrqD,CAAC,GACX,EAAE22C,CAEV,OAAagU,IAAO3qD,GAChB,EAAEtG,CACH,CACD,OAAA1C,EAAO,KACPqzD,EAAS,KACW,SAAUrjD,EAAG,CAC/BA,EAAE,KAAI,EACNA,EAAE,MAAM,EAAIpL,EAAO,GAAKR,CAAM,EAC9B4L,EAAE,UAAU,EAAG,CAAC5L,CAAM,EACtB4L,EAAE,KAAKmI,CAAI,EACXnI,EAAE,UAAS,EACXA,EAAE,QAAO,CACb,CAEA,CACA,MAAM6jD,EAAiB,CACrB,YAAYjvD,EAAOR,EAAQ,CACzB,KAAK,aAAe,GACpB,KAAK,SAAW,EAChB,KAAK,cAAgB,EACrB,KAAK,WAAauwB,GAClB,KAAK,gBAAkB,EACvB,KAAK,WAAaC,GAClB,KAAK,QAAU,EACf,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,kBAAoBI,GAAkB,KAC3C,KAAK,SAAW,EAChB,KAAK,UAAY,UACjB,KAAK,YAAc,UACnB,KAAK,YAAc,GACnB,KAAK,cAAgB,GACrB,KAAK,UAAY,EACjB,KAAK,YAAc,EACnB,KAAK,UAAY,EACjB,KAAK,YAAc,KACnB,KAAK,aAAe,OACpB,KAAK,uBAAuB,CAAC,EAAG,EAAGpwB,EAAOR,CAAM,CAAC,CAClD,CACD,OAAQ,CACN,MAAM07C,EAAQ,OAAO,OAAO,IAAI,EAChC,OAAAA,EAAM,QAAU,KAAK,QAAQ,MAAK,EAC3BA,CACR,CACD,gBAAgB7xB,EAAGO,EAAG,CACpB,KAAK,EAAIP,EACT,KAAK,EAAIO,CACV,CACD,iBAAiB6I,EAAWpJ,EAAGO,EAAG,CAChC,CAACP,EAAGO,CAAC,EAAIxY,GAAK,eAAe,CAACiY,EAAGO,CAAC,EAAG6I,CAAS,EAC9C,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMpJ,CAAC,EACjC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMO,CAAC,EACjC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMP,CAAC,EACjC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMO,CAAC,CAClC,CACD,iBAAiB6I,EAAWgB,EAAM,CAChC,MAAMT,EAAK5hB,GAAK,eAAeqiB,EAAMhB,CAAS,EACxCQ,EAAK7hB,GAAK,eAAeqiB,EAAK,MAAM,CAAC,EAAGhB,CAAS,EACjDS,EAAK9hB,GAAK,eAAe,CAACqiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAGhB,CAAS,EACtDU,EAAK/hB,GAAK,eAAe,CAACqiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAGhB,CAAS,EAC5D,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMO,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,EAC1D,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMH,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,EAC1D,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMH,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,EAC1D,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMH,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,EAAGC,EAAG,CAAC,CAAC,CAC3D,CACD,wBAAwBV,EAAWC,EAAQ,CACzCthB,GAAK,YAAYqhB,EAAWC,CAAM,EAClC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMA,EAAO,CAAC,CAAC,EACzC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMA,EAAO,CAAC,CAAC,EACzC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMA,EAAO,CAAC,CAAC,EACzC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMA,EAAO,CAAC,CAAC,CAC1C,CACD,sBAAsBD,EAAWuB,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI7B,EAAQ,CACvE,MAAMgL,EAAMtsB,GAAK,kBAAkB4iB,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI7B,CAAM,EACrEA,GAGJ,KAAK,iBAAiBD,EAAWiL,CAAG,CACrC,CACD,mBAAmBkoB,EAAWX,GAAS,KAAMxyB,EAAY,KAAM,CAC7D,MAAMiL,EAAM,CAAC,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,IAAI,EACvD,GAAIkoB,IAAaX,GAAS,OAAQ,CAC3BxyB,GACH/B,GAAY,6CAA6C,EAE3D,MAAM6F,EAAQnlB,GAAK,8BAA8BqhB,CAAS,EACpDy8B,EAAa34B,EAAM,CAAC,EAAI,KAAK,UAAY,EACzC44B,EAAa54B,EAAM,CAAC,EAAI,KAAK,UAAY,EAC/CmH,EAAI,CAAC,GAAKwxB,EACVxxB,EAAI,CAAC,GAAKyxB,EACVzxB,EAAI,CAAC,GAAKwxB,EACVxxB,EAAI,CAAC,GAAKyxB,CACX,CACD,OAAOzxB,CACR,CACD,oBAAqB,CACnB,MAAM0xB,EAAYh+C,GAAK,UAAU,KAAK,QAAS,KAAK,mBAAkB,CAAE,EACxE,KAAK,uBAAuBg+C,GAAa,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,CACtD,CACD,aAAc,CACZ,OAAO,KAAK,OAAS,GACtB,CACD,uBAAuB1xB,EAAK,CAC1B,KAAK,QAAUA,EACf,KAAK,KAAO,IACZ,KAAK,KAAO,IACZ,KAAK,KAAO,EACZ,KAAK,KAAO,CACb,CACD,0BAA0BkoB,EAAWX,GAAS,KAAMxyB,EAAY,KAAM,CACpE,OAAOrhB,GAAK,UAAU,KAAK,QAAS,KAAK,mBAAmBw0C,EAAUnzB,CAAS,CAAC,CACjF,CACH,CACA,SAAS48B,GAAmB3wD,EAAK2vD,EAAS,CACxC,GAAIA,aAAmB,UAAW,CAChC3vD,EAAI,aAAa2vD,EAAS,EAAG,CAAC,EAC9B,MACD,CACD,MAAM7uD,EAAS6uD,EAAQ,OACrBruD,EAAQquD,EAAQ,MACZiB,EAAqB9vD,EAASgtD,GAC9B+C,GAAc/vD,EAAS8vD,GAAsB9C,GAC7CgD,EAAcF,IAAuB,EAAIC,EAAaA,EAAa,EACnEE,EAAe/wD,EAAI,gBAAgBsB,EAAOwsD,EAAiB,EACjE,IAAIhB,EAAS,EACXS,EACF,MAAM53C,EAAMg6C,EAAQ,KACd/qD,EAAOmsD,EAAa,KAC1B,IAAI3xD,EAAGylD,EAAGmM,EAAiBC,EAC3B,GAAItB,EAAQ,OAAS3gC,GAAe,eAAgB,CAClD,MAAMs+B,EAAY33C,EAAI,WAChBu7C,EAAS,IAAI,YAAYtsD,EAAK,OAAQ,EAAGA,EAAK,YAAc,CAAC,EAC7DusD,EAAmBD,EAAO,OAC1BE,EAAc9vD,EAAQ,GAAK,EAC3B+vD,EAAQ,WACRpE,EAAQn+B,GAAiB,eAAiB,WAAa,IAC7D,IAAK1vB,EAAI,EAAGA,EAAI0xD,EAAa1xD,IAAK,CAGhC,IAFA4xD,EAAkB5xD,EAAIyxD,EAAa/C,GAAoB8C,EACvDrD,EAAU,EACL1I,EAAI,EAAGA,EAAImM,EAAiBnM,IAAK,CACpC,MAAMyM,EAAUhE,EAAYR,EAC5B,IAAI3hC,EAAI,EACR,MAAMomC,GAAOD,EAAUF,EAAc9vD,EAAQgwD,EAAU,EAAI,EACrDE,GAAeD,GAAO,GAC5B,IAAIrB,GAAO,EACPuB,GAAU,EACd,KAAOtmC,EAAIqmC,GAAcrmC,GAAK,EAC5BsmC,GAAU97C,EAAIm3C,GAAQ,EACtBoE,EAAO3D,GAAS,EAAIkE,GAAU,IAAMJ,EAAQpE,EAC5CiE,EAAO3D,GAAS,EAAIkE,GAAU,GAAKJ,EAAQpE,EAC3CiE,EAAO3D,GAAS,EAAIkE,GAAU,GAAKJ,EAAQpE,EAC3CiE,EAAO3D,GAAS,EAAIkE,GAAU,GAAKJ,EAAQpE,EAC3CiE,EAAO3D,GAAS,EAAIkE,GAAU,EAAIJ,EAAQpE,EAC1CiE,EAAO3D,GAAS,EAAIkE,GAAU,EAAIJ,EAAQpE,EAC1CiE,EAAO3D,GAAS,EAAIkE,GAAU,EAAIJ,EAAQpE,EAC1CiE,EAAO3D,GAAS,EAAIkE,GAAU,EAAIJ,EAAQpE,EAE5C,KAAO9hC,EAAIomC,GAAMpmC,IACX+kC,KAAS,IACXuB,GAAU97C,EAAIm3C,GAAQ,EACtBoD,GAAO,KAETgB,EAAO3D,GAAS,EAAIkE,GAAUvB,GAAOmB,EAAQpE,EAC7CiD,KAAS,CAEZ,CACD,KAAO3C,EAAU4D,GACfD,EAAO3D,GAAS,EAAI,EAEtBvtD,EAAI,aAAa+wD,EAAc,EAAG3xD,EAAI0uD,EAAiB,CACxD,CACF,SAAU6B,EAAQ,OAAS3gC,GAAe,WAAY,CAGrD,IAFA61B,EAAI,EACJoM,EAAmB3vD,EAAQwsD,GAAoB,EAC1C1uD,EAAI,EAAGA,EAAIyxD,EAAYzxD,IAC1BwF,EAAK,IAAI+Q,EAAI,SAASm3C,EAAQA,EAASmE,CAAgB,CAAC,EACxDnE,GAAUmE,EACVjxD,EAAI,aAAa+wD,EAAc,EAAGlM,CAAC,EACnCA,GAAKiJ,GAEH1uD,EAAI0xD,IACNG,EAAmB3vD,EAAQsvD,EAAqB,EAChDhsD,EAAK,IAAI+Q,EAAI,SAASm3C,EAAQA,EAASmE,CAAgB,CAAC,EACxDjxD,EAAI,aAAa+wD,EAAc,EAAGlM,CAAC,EAEtC,SAAU8K,EAAQ,OAAS3gC,GAAe,UAGzC,IAFAgiC,EAAkBlD,GAClBmD,EAAmB3vD,EAAQ0vD,EACtB5xD,EAAI,EAAGA,EAAI0xD,EAAa1xD,IAAK,CAMhC,IALIA,GAAKyxD,IACPG,EAAkBJ,EAClBK,EAAmB3vD,EAAQ0vD,GAE7BzD,EAAU,EACL1I,EAAIoM,EAAkBpM,KACzBjgD,EAAK2oD,GAAS,EAAI53C,EAAIm3C,GAAQ,EAC9BloD,EAAK2oD,GAAS,EAAI53C,EAAIm3C,GAAQ,EAC9BloD,EAAK2oD,GAAS,EAAI53C,EAAIm3C,GAAQ,EAC9BloD,EAAK2oD,GAAS,EAAI,IAEpBvtD,EAAI,aAAa+wD,EAAc,EAAG3xD,EAAI0uD,EAAiB,CACxD,KAED,OAAM,IAAI,MAAM,mBAAmB6B,EAAQ,IAAI,EAAE,CAErD,CACA,SAAS+B,GAAmB1xD,EAAK2vD,EAAS,CACxC,GAAIA,EAAQ,OAAQ,CAClB3vD,EAAI,UAAU2vD,EAAQ,OAAQ,EAAG,CAAC,EAClC,MACD,CACD,MAAM7uD,EAAS6uD,EAAQ,OACrBruD,EAAQquD,EAAQ,MACZiB,EAAqB9vD,EAASgtD,GAC9B+C,GAAc/vD,EAAS8vD,GAAsB9C,GAC7CgD,EAAcF,IAAuB,EAAIC,EAAaA,EAAa,EACnEE,EAAe/wD,EAAI,gBAAgBsB,EAAOwsD,EAAiB,EACjE,IAAIhB,EAAS,EACb,MAAMn3C,EAAMg6C,EAAQ,KACd/qD,EAAOmsD,EAAa,KAC1B,QAAS3xD,EAAI,EAAGA,EAAI0xD,EAAa1xD,IAAK,CACpC,MAAM4xD,EAAkB5xD,EAAIyxD,EAAa/C,GAAoB8C,GAC5D,CACC,OAAA9D,CACD,EAAGD,GAA2B,CAC7B,IAAAl3C,EACA,OAAAm3C,EACA,KAAAloD,EACA,MAAAtD,EACA,OAAQ0vD,EACR,cAAe,CACrB,CAAK,GACDhxD,EAAI,aAAa+wD,EAAc,EAAG3xD,EAAI0uD,EAAiB,CACxD,CACH,CACA,SAAS6D,GAAaC,EAAW5D,EAAS,CACxC,MAAM6D,EAAa,CAAC,cAAe,YAAa,WAAY,cAAe,YAAa,UAAW,WAAY,aAAc,2BAA4B,OAAQ,QAAQ,EACzK,UAAW5lD,KAAY4lD,EACjBD,EAAU3lD,CAAQ,IAAM,SAC1B+hD,EAAQ/hD,CAAQ,EAAI2lD,EAAU3lD,CAAQ,GAGtC2lD,EAAU,cAAgB,SAC5B5D,EAAQ,YAAY4D,EAAU,YAAa,GAC3C5D,EAAQ,eAAiB4D,EAAU,eAEvC,CACA,SAASE,GAAkB9xD,EAAK,CAc9B,GAbAA,EAAI,YAAcA,EAAI,UAAY,UAClCA,EAAI,SAAW,UACfA,EAAI,YAAc,EAClBA,EAAI,UAAY,EAChBA,EAAI,QAAU,OACdA,EAAI,SAAW,QACfA,EAAI,WAAa,GACjBA,EAAI,yBAA2B,cAC/BA,EAAI,KAAO,kBACPA,EAAI,cAAgB,SACtBA,EAAI,YAAY,EAAE,EAClBA,EAAI,eAAiB,GAEnB,CAACoxB,GAAU,CACb,KAAM,CACJ,OAAAnd,CACD,EAAGjU,EACAiU,IAAW,QAAUA,IAAW,KAClCjU,EAAI,OAAS,OAEhB,CACH,CACA,SAAS+xD,GAAyBh+B,EAAWi+B,EAAa,CACxD,GAAIA,EACF,MAAO,GAET,MAAMn6B,EAAQnlB,GAAK,8BAA8BqhB,CAAS,EAC1D8D,EAAM,CAAC,EAAI,KAAK,OAAOA,EAAM,CAAC,CAAC,EAC/BA,EAAM,CAAC,EAAI,KAAK,OAAOA,EAAM,CAAC,CAAC,EAC/B,MAAMo6B,EAAc,KAAK,OAAO7iC,GAAY,WAAaM,GAAc,gBAAgB,EACvF,OAAOmI,EAAM,CAAC,GAAKo6B,GAAep6B,EAAM,CAAC,GAAKo6B,CAChD,CACA,MAAMC,GAAkB,CAAC,OAAQ,QAAS,QAAQ,EAC5CC,GAAmB,CAAC,QAAS,QAAS,OAAO,EAC7CC,GAAc,GACdC,GAAU,yBAChB,MAAMC,GAAN,MAAMA,EAAe,CACnB,YAAYC,EAAWC,EAAY9T,EAAM4P,EAAemE,EAAe,CACrE,sBAAAC,EACA,mBAAAC,EAAqB,IACzB,EAAKC,EAAqBxwB,EAAY,CAoHpC3L,EAAA,KAAAo8B,IA8BAp8B,EAAA,KAAAq8B,IA8lBAr8B,EAAA,KAAAs8B,IA/uBE,KAAK,IAAMR,EACX,KAAK,QAAU,IAAIhC,GAAiB,KAAK,IAAI,OAAO,MAAO,KAAK,IAAI,OAAO,MAAM,EACjF,KAAK,WAAa,GAClB,KAAK,YAAc,KACnB,KAAK,cAAgB,GACrB,KAAK,IAAM,KACX,KAAK,MAAQ,KACb,KAAK,WAAaiC,EAClB,KAAK,KAAO9T,EACZ,KAAK,cAAgB4P,EACrB,KAAK,cAAgBmE,EACrB,KAAK,WAAa,GAClB,KAAK,gBAAkB,KACvB,KAAK,cAAgB,KACrB,KAAK,mBAAqB,GAC1B,KAAK,WAAa,EAClB,KAAK,WAAa,GAClB,KAAK,aAAe,EACpB,KAAK,UAAY,KACjB,KAAK,aAAe,KACpB,KAAK,eAAiB,GACtB,KAAK,mBAAqBE,GAAsB,GAChD,KAAK,sBAAwBD,EAC7B,KAAK,eAAiB,IAAIrE,GAAe,KAAK,aAAa,EAC3D,KAAK,eAAiB,IAAI,IAC1B,KAAK,oBAAsBuE,EAC3B,KAAK,cAAgB,EACrB,KAAK,aAAe,EACpB,KAAK,aAAe,EACpB,KAAK,WAAaxwB,EAClB,KAAK,wBAA0B,CAAC,GAAI,CAAC,EACrC,KAAK,2BAA6B,KAClC,KAAK,kBAAoB,IAAI,GAC9B,CACD,UAAU1lC,EAAMs2D,EAAW,KAAM,CAC/B,OAAI,OAAOt2D,GAAS,SACXA,EAAK,WAAW,IAAI,EAAI,KAAK,WAAW,IAAIA,CAAI,EAAI,KAAK,KAAK,IAAIA,CAAI,EAExEs2D,CACR,CACD,aAAa,CACX,UAAAj/B,EACA,SAAAkH,EACA,aAAAg4B,EAAe,GACf,WAAAC,EAAa,IACjB,EAAK,CACD,MAAM5xD,EAAQ,KAAK,IAAI,OAAO,MACxBR,EAAS,KAAK,IAAI,OAAO,OACzBqyD,EAAiB,KAAK,IAAI,UAIhC,GAHA,KAAK,IAAI,UAAYD,GAAc,UACnC,KAAK,IAAI,SAAS,EAAG,EAAG5xD,EAAOR,CAAM,EACrC,KAAK,IAAI,UAAYqyD,EACjBF,EAAc,CAChB,MAAMG,EAAoB,KAAK,eAAe,UAAU,cAAe9xD,EAAOR,CAAM,EACpF,KAAK,aAAe,KAAK,IACzB,KAAK,kBAAoBsyD,EAAkB,OAC3C,KAAK,IAAMA,EAAkB,QAC7B,KAAK,IAAI,OACT,KAAK,IAAI,UAAU,GAAGt4B,GAAoB,KAAK,YAAY,CAAC,CAC7D,CACD,KAAK,IAAI,OACTg3B,GAAkB,KAAK,GAAG,EACtB/9B,IACF,KAAK,IAAI,UAAU,GAAGA,CAAS,EAC/B,KAAK,aAAeA,EAAU,CAAC,EAC/B,KAAK,aAAeA,EAAU,CAAC,GAEjC,KAAK,IAAI,UAAU,GAAGkH,EAAS,SAAS,EACxC,KAAK,cAAgBA,EAAS,MAC9B,KAAK,cAAgBH,GAAoB,KAAK,GAAG,CAClD,CACD,oBAAoB+vB,EAAcwI,EAAmBC,EAAkBC,EAAS,CAC9E,MAAMC,EAAY3I,EAAa,UACzB4I,EAAU5I,EAAa,QAC7B,IAAIzrD,EAAIi0D,GAAqB,EAC7B,MAAMK,EAAeF,EAAU,OAC/B,GAAIE,IAAiBt0D,EACnB,OAAOA,EAET,MAAMu0D,EAAkBD,EAAet0D,EAAIwuD,IAAmB,OAAO0F,GAAqB,WACpFM,EAAUD,EAAkB,KAAK,IAAK,EAAGhG,GAAiB,EAChE,IAAIyC,EAAQ,EACZ,MAAMoC,EAAa,KAAK,WAClB9T,EAAO,KAAK,KAClB,IAAImV,EACJ,OAAa,CACX,GAAIN,IAAY,QAAan0D,IAAMm0D,EAAQ,eACzC,OAAAA,EAAQ,QAAQn0D,EAAGk0D,CAAgB,EAC5Bl0D,EAGT,GADAy0D,EAAOJ,EAAQr0D,CAAC,EACZy0D,IAAS1kC,GAAI,WACf,KAAK0kC,CAAI,EAAE,MAAM,KAAML,EAAUp0D,CAAC,CAAC,MAEnC,WAAW00D,KAAYN,EAAUp0D,CAAC,EAAG,CACnC,MAAM20D,EAAWD,EAAS,WAAW,IAAI,EAAItB,EAAa9T,EAC1D,GAAI,CAACqV,EAAS,IAAID,CAAQ,EACxB,OAAAC,EAAS,IAAID,EAAUR,CAAgB,EAChCl0D,CAEV,CAGH,GADAA,IACIA,IAAMs0D,EACR,OAAOt0D,EAET,GAAIu0D,GAAmB,EAAEvD,EAAQxC,GAAiB,CAChD,GAAI,KAAK,IAAK,EAAGgG,EACf,OAAAN,IACOl0D,EAETgxD,EAAQ,CACT,CACF,CACF,CAgBD,YAAa,CACXt6B,EAAA,KAAK+8B,GAAAmB,IAAL,WACA,KAAK,eAAe,QACpB,KAAK,eAAe,QACpB,UAAWC,KAAS,KAAK,kBAAkB,OAAM,EAAI,CACnD,UAAWv0D,KAAUu0D,EAAM,SACrB,OAAO,kBAAsB,KAAev0D,aAAkB,oBAChEA,EAAO,MAAQA,EAAO,OAAS,GAGnCu0D,EAAM,MAAK,CACZ,CACD,KAAK,kBAAkB,QACvBn+B,EAAA,KAAKg9B,GAAAoB,IAAL,UACD,CAYD,YAAYhzD,EAAKizD,EAAkB,CACjC,MAAM7yD,EAAQJ,EAAI,OAASA,EAAI,aACzBJ,EAASI,EAAI,QAAUA,EAAI,cACjC,IAAIkzD,EAAa,KAAK,IAAI,KAAK,MAAMD,EAAiB,CAAC,EAAGA,EAAiB,CAAC,CAAC,EAAG,CAAC,EAC7EE,EAAc,KAAK,IAAI,KAAK,MAAMF,EAAiB,CAAC,EAAGA,EAAiB,CAAC,CAAC,EAAG,CAAC,EAC9EG,EAAahzD,EACfizD,EAAczzD,EACZ0zD,EAAc,YACdnN,EAAWC,EACf,KAAO8M,EAAa,GAAKE,EAAa,GAAKD,EAAc,GAAKE,EAAc,GAAG,CAC7E,IAAIzc,EAAWwc,EACbvc,EAAYwc,EACVH,EAAa,GAAKE,EAAa,IACjCxc,EAAWwc,GAAc,MAAQ,KAAK,MAAMA,EAAa,CAAC,EAAI,GAAK,EAAI,KAAK,KAAKA,EAAa,CAAC,EAC/FF,GAAcE,EAAaxc,GAEzBuc,EAAc,GAAKE,EAAc,IACnCxc,EAAYwc,GAAe,MAAQ,KAAK,MAAMA,EAAc,CAAC,EAAI,GAAK,EAAI,KAAK,KAAKA,CAAW,EAAI,EACnGF,GAAeE,EAAcxc,GAE/BsP,EAAY,KAAK,eAAe,UAAUmN,EAAa1c,EAAUC,CAAS,EAC1EuP,EAASD,EAAU,QACnBC,EAAO,UAAU,EAAG,EAAGxP,EAAUC,CAAS,EAC1CuP,EAAO,UAAUpmD,EAAK,EAAG,EAAGozD,EAAYC,EAAa,EAAG,EAAGzc,EAAUC,CAAS,EAC9E72C,EAAMmmD,EAAU,OAChBiN,EAAaxc,EACbyc,EAAcxc,EACdyc,EAAcA,IAAgB,YAAc,YAAc,WAC3D,CACD,MAAO,CACL,IAAAtzD,EACA,WAAAozD,EACA,YAAAC,CACN,CACG,CACD,kBAAkBrzD,EAAK,CACrB,MAAMlB,EAAM,KAAK,IACX,CACJ,MAAAsB,EACA,OAAAR,CACD,EAAGI,EACEuzD,EAAY,KAAK,QAAQ,UACzBC,EAAgB,KAAK,QAAQ,YAC7BC,EAAmB75B,GAAoB96B,CAAG,EAChD,IAAIi0D,EAAOW,EAAUC,EAAQC,EAC7B,IAAK5zD,EAAI,QAAUA,EAAI,OAASA,EAAI,MAAQ,EAAG,CAC7C,MAAM6zD,GAAU7zD,EAAI,QAAUA,EAAI,KAAK,OACvC0zD,EAAW,KAAK,UAAUF,EAAgBC,EAAmB,CAACA,EAAiB,MAAM,EAAG,CAAC,EAAGF,CAAS,CAAC,EACtGR,EAAQ,KAAK,kBAAkB,IAAIc,EAAO,EACrCd,IACHA,EAAQ,IAAI,IACZ,KAAK,kBAAkB,IAAIc,GAASd,CAAK,GAE3C,MAAMe,GAAcf,EAAM,IAAIW,CAAQ,EACtC,GAAII,IAAe,CAACN,EAAe,CACjC,MAAM38B,GAAU,KAAK,MAAM,KAAK,IAAI48B,EAAiB,CAAC,EAAGA,EAAiB,CAAC,CAAC,EAAIA,EAAiB,CAAC,CAAC,EAC7F38B,GAAU,KAAK,MAAM,KAAK,IAAI28B,EAAiB,CAAC,EAAGA,EAAiB,CAAC,CAAC,EAAIA,EAAiB,CAAC,CAAC,EACnG,MAAO,CACL,OAAQK,GACR,QAAAj9B,GACA,QAAAC,EACV,CACO,CACD68B,EAASG,EACV,CACIH,IACHC,EAAa,KAAK,eAAe,UAAU,aAAcxzD,EAAOR,CAAM,EACtE4wD,GAAmBoD,EAAW,QAAS5zD,CAAG,GAE5C,IAAI+zD,EAAeviD,GAAK,UAAUiiD,EAAkB,CAAC,EAAIrzD,EAAO,EAAG,EAAG,GAAKR,EAAQ,EAAG,CAAC,CAAC,EACxFm0D,EAAeviD,GAAK,UAAUuiD,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAACn0D,CAAM,CAAC,EACpE,KAAM,CAACo0D,EAAM1M,EAAM2M,EAAM1M,CAAI,EAAI/1C,GAAK,2BAA2B,CAAC,EAAG,EAAGpR,EAAOR,CAAM,EAAGm0D,CAAY,EAC9FG,EAAa,KAAK,MAAMD,EAAOD,CAAI,GAAK,EACxCG,EAAc,KAAK,MAAM5M,EAAOD,CAAI,GAAK,EACzC8M,EAAa,KAAK,eAAe,UAAU,aAAcF,EAAYC,CAAW,EAChFE,EAAUD,EAAW,QACrBv9B,EAAUm9B,EACVl9B,EAAUwwB,EAChB+M,EAAQ,UAAU,CAACx9B,EAAS,CAACC,CAAO,EACpCu9B,EAAQ,UAAU,GAAGN,CAAY,EAC5BJ,IACHA,EAAS,KAAK,YAAYC,EAAW,OAAQ/5B,GAA2Bw6B,CAAO,CAAC,EAChFV,EAASA,EAAO,IACZZ,GAASS,GACXT,EAAM,IAAIW,EAAUC,CAAM,GAG9BU,EAAQ,sBAAwBxD,GAAyBj3B,GAAoBy6B,CAAO,EAAGr0D,EAAI,WAAW,EACtGstD,GAAyB+G,EAASV,EAAQ,EAAG,EAAGA,EAAO,MAAOA,EAAO,OAAQ,EAAG,EAAGvzD,EAAOR,CAAM,EAChGy0D,EAAQ,yBAA2B,YACnC,MAAMtO,EAAUv0C,GAAK,UAAUqoB,GAA2Bw6B,CAAO,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,CAACx9B,EAAS,CAACC,CAAO,CAAC,EACpG,OAAAu9B,EAAQ,UAAYb,EAAgBD,EAAU,WAAWz0D,EAAK,KAAMinD,EAASV,GAAS,IAAI,EAAIkO,EAC9Fc,EAAQ,SAAS,EAAG,EAAGj0D,EAAOR,CAAM,EAChCmzD,GAAS,CAACS,IACZ,KAAK,eAAe,OAAO,YAAY,EACvCT,EAAM,IAAIW,EAAUU,EAAW,MAAM,GAEhC,CACL,OAAQA,EAAW,OACnB,QAAS,KAAK,MAAMv9B,CAAO,EAC3B,QAAS,KAAK,MAAMC,CAAO,CACjC,CACG,CACD,aAAa12B,EAAO,CACdA,IAAU,KAAK,QAAQ,YACzB,KAAK,wBAAwB,CAAC,EAAI,IAEpC,KAAK,QAAQ,UAAYA,EACzB,KAAK,IAAI,UAAYA,CACtB,CACD,WAAWg6B,EAAO,CAChB,KAAK,IAAI,QAAU42B,GAAgB52B,CAAK,CACzC,CACD,YAAYA,EAAO,CACjB,KAAK,IAAI,SAAW62B,GAAiB72B,CAAK,CAC3C,CACD,cAAck6B,EAAO,CACnB,KAAK,IAAI,WAAaA,CACvB,CACD,QAAQC,EAAWC,EAAW,CAC5B,MAAM11D,EAAM,KAAK,IACbA,EAAI,cAAgB,SACtBA,EAAI,YAAYy1D,CAAS,EACzBz1D,EAAI,eAAiB01D,EAExB,CACD,mBAAmBC,EAAQ,CAAE,CAC7B,YAAYC,EAAU,CAAE,CACxB,UAAUC,EAAQ,CAChB,SAAW,CAACz0D,EAAKyG,CAAK,IAAKguD,EACzB,OAAQz0D,EAAG,CACT,IAAK,KACH,KAAK,aAAayG,CAAK,EACvB,MACF,IAAK,KACH,KAAK,WAAWA,CAAK,EACrB,MACF,IAAK,KACH,KAAK,YAAYA,CAAK,EACtB,MACF,IAAK,KACH,KAAK,cAAcA,CAAK,EACxB,MACF,IAAK,IACH,KAAK,QAAQA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAC/B,MACF,IAAK,KACH,KAAK,mBAAmBA,CAAK,EAC7B,MACF,IAAK,KACH,KAAK,YAAYA,CAAK,EACtB,MACF,IAAK,OACH,KAAK,QAAQA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAC/B,MACF,IAAK,KACH,KAAK,QAAQ,YAAcA,EAC3B,MACF,IAAK,KACH,KAAK,QAAQ,UAAYA,EACzB,KAAK,IAAI,YAAcA,EACvB,MACF,IAAK,KACH,KAAK,IAAI,yBAA2BA,EACpC,MACF,IAAK,QACH,KAAK,QAAQ,YAAcA,EAAQ,KAAK,UAAY,KACpD,KAAK,UAAY,KACjB,KAAK,gBAAe,EACpB,MACF,IAAK,KACH,KAAK,IAAI,OAAS,KAAK,QAAQ,aAAe,KAAK,cAAc,UAAUA,CAAK,EAChF,KACH,CAEJ,CACD,IAAI,aAAc,CAChB,MAAO,CAAC,CAAC,KAAK,YACf,CACD,iBAAkB,CAChB,MAAMiuD,EAAc,KAAK,YACrB,KAAK,QAAQ,aAAe,CAACA,EAC/B,KAAK,eAAc,EACV,CAAC,KAAK,QAAQ,aAAeA,GACtC,KAAK,aAAY,CAEpB,CACD,gBAAiB,CACf,GAAI,KAAK,YACP,MAAM,IAAI,MAAM,mDAAmD,EAErE,MAAMV,EAAa,KAAK,IAAI,OAAO,MAC7BC,EAAc,KAAK,IAAI,OAAO,OAC9BU,EAAU,eAAiB,KAAK,WAChCC,EAAgB,KAAK,eAAe,UAAUD,EAASX,EAAYC,CAAW,EACpF,KAAK,aAAe,KAAK,IACzB,KAAK,IAAMW,EAAc,QACzB,MAAMh2D,EAAM,KAAK,IACjBA,EAAI,aAAa,GAAG86B,GAAoB,KAAK,YAAY,CAAC,EAC1D62B,GAAa,KAAK,aAAc3xD,CAAG,EACnC+tD,GAAwB/tD,EAAK,KAAK,YAAY,EAC9C,KAAK,UAAU,CAAC,CAAC,KAAM,aAAa,EAAG,CAAC,KAAM,CAAC,EAAG,CAAC,KAAM,CAAC,CAAC,CAAC,CAC7D,CACD,cAAe,CACb,GAAI,CAAC,KAAK,YACR,MAAM,IAAI,MAAM,6CAA6C,EAE/D,KAAK,IAAI,mBACT2xD,GAAa,KAAK,IAAK,KAAK,YAAY,EACxC,KAAK,IAAM,KAAK,aAChB,KAAK,aAAe,IACrB,CACD,QAAQsE,EAAU,CAChB,GAAI,CAAC,KAAK,QAAQ,YAChB,OAEGA,GAGHA,EAAS,CAAC,EAAI,KAAK,MAAMA,EAAS,CAAC,CAAC,EACpCA,EAAS,CAAC,EAAI,KAAK,MAAMA,EAAS,CAAC,CAAC,EACpCA,EAAS,CAAC,EAAI,KAAK,KAAKA,EAAS,CAAC,CAAC,EACnCA,EAAS,CAAC,EAAI,KAAK,KAAKA,EAAS,CAAC,CAAC,GALnCA,EAAW,CAAC,EAAG,EAAG,KAAK,IAAI,OAAO,MAAO,KAAK,IAAI,OAAO,MAAM,EAOjE,MAAMC,EAAQ,KAAK,QAAQ,YACrBC,EAAe,KAAK,aAC1B,KAAK,aAAaA,EAAcD,EAAO,KAAK,IAAKD,CAAQ,EACzD,KAAK,IAAI,OACT,KAAK,IAAI,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtC,KAAK,IAAI,UAAU,EAAG,EAAG,KAAK,IAAI,OAAO,MAAO,KAAK,IAAI,OAAO,MAAM,EACtE,KAAK,IAAI,SACV,CACD,aAAaj2D,EAAKk2D,EAAOE,EAAUC,EAAU,CAC3C,MAAMC,EAAeD,EAAS,CAAC,EACzBE,EAAeF,EAAS,CAAC,EACzBG,EAAaH,EAAS,CAAC,EAAIC,EAC3BG,EAAcJ,EAAS,CAAC,EAAIE,EAC9BC,IAAe,GAAKC,IAAgB,IAGxC,KAAK,oBAAoBP,EAAM,QAASE,EAAUI,EAAYC,EAAaP,EAAM,QAASA,EAAM,SAAUA,EAAM,YAAaI,EAAcC,EAAcL,EAAM,QAASA,EAAM,OAAO,EACrLl2D,EAAI,KAAI,EACRA,EAAI,YAAc,EAClBA,EAAI,yBAA2B,cAC/BA,EAAI,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjCA,EAAI,UAAUo2D,EAAS,OAAQ,EAAG,CAAC,EACnCp2D,EAAI,QAAO,EACZ,CACD,oBAAoB02D,EAASN,EAAU90D,EAAOR,EAAQ61D,EAASC,EAAUC,EAAaP,EAAcC,EAAcO,EAAaC,EAAa,CAC1I,IAAIjC,EAAa4B,EAAQ,OACrBM,EAAQV,EAAeQ,EACvBG,EAAQV,EAAeQ,EAC3B,GAAIH,EAAU,CACZ,MAAMM,EAAcxkD,GAAK,aAAa,GAAGkkD,CAAQ,EACjD,GAAII,EAAQ,GAAKC,EAAQ,GAAKD,EAAQ11D,EAAQwzD,EAAW,OAASmC,EAAQn2D,EAASg0D,EAAW,OAAQ,CACpG,MAAMp1D,EAAS,KAAK,eAAe,UAAU,gBAAiB4B,EAAOR,CAAM,EACrEd,EAAMN,EAAO,QACnBM,EAAI,UAAU80D,EAAY,CAACkC,EAAO,CAACC,CAAK,EACxCj3D,EAAI,yBAA2B,mBAC/BA,EAAI,UAAYk3D,EAChBl3D,EAAI,SAAS,EAAG,EAAGsB,EAAOR,CAAM,EAChCd,EAAI,yBAA2B,cAC/B80D,EAAap1D,EAAO,OACpBs3D,EAAQC,EAAQ,CACxB,KAAa,CACLP,EAAQ,KAAI,EACZA,EAAQ,YAAc,EACtBA,EAAQ,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACrC,MAAMS,EAAO,IAAI,OACjBA,EAAK,KAAKH,EAAOC,EAAO31D,EAAOR,CAAM,EACrC41D,EAAQ,KAAKS,CAAI,EACjBT,EAAQ,yBAA2B,mBACnCA,EAAQ,UAAYQ,EACpBR,EAAQ,SAASM,EAAOC,EAAO31D,EAAOR,CAAM,EAC5C41D,EAAQ,QAAO,CAChB,CACF,CACDN,EAAS,KAAI,EACbA,EAAS,YAAc,EACvBA,EAAS,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAClCO,IAAY,SAAWE,EACzBT,EAAS,OAAS,KAAK,cAAc,eAAeS,CAAW,EACtDF,IAAY,eACrBP,EAAS,OAAS,KAAK,cAAc,oBAAoBS,CAAW,GAEtE,MAAMM,EAAO,IAAI,OACjBA,EAAK,KAAKb,EAAcC,EAAcj1D,EAAOR,CAAM,EACnDs1D,EAAS,KAAKe,CAAI,EAClBf,EAAS,yBAA2B,iBACpCA,EAAS,UAAUtB,EAAYkC,EAAOC,EAAO31D,EAAOR,EAAQw1D,EAAcC,EAAcj1D,EAAOR,CAAM,EACrGs1D,EAAS,QAAO,CACjB,CACD,MAAO,CACD,KAAK,aACPzE,GAAa,KAAK,IAAK,KAAK,YAAY,EACxC,KAAK,aAAa,QAElB,KAAK,IAAI,OAEX,MAAMyF,EAAM,KAAK,QACjB,KAAK,WAAW,KAAKA,CAAG,EACxB,KAAK,QAAUA,EAAI,OACpB,CACD,SAAU,CACJ,KAAK,WAAW,SAAW,GAAK,KAAK,aACvC,KAAK,aAAY,EAEf,KAAK,WAAW,SAAW,IAC7B,KAAK,QAAU,KAAK,WAAW,IAAG,EAC9B,KAAK,aACP,KAAK,aAAa,UAClBzF,GAAa,KAAK,aAAc,KAAK,GAAG,GAExC,KAAK,IAAI,UAEX,KAAK,gBAAe,EACpB,KAAK,YAAc,KACnB,KAAK,wBAAwB,CAAC,EAAI,GAClC,KAAK,2BAA6B,KAErC,CACD,UAAUztD,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,EAAG,CAC1B,KAAK,IAAI,UAAUnB,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,EACnC,KAAK,wBAAwB,CAAC,EAAI,GAClC,KAAK,2BAA6B,IACnC,CACD,cAAcgyD,EAAK1kD,EAAMqhB,EAAQ,CAC/B,MAAMh0B,EAAM,KAAK,IACXod,EAAU,KAAK,QACrB,IAAIuN,EAAIvN,EAAQ,EACd8N,EAAI9N,EAAQ,EACVk6C,EAAQC,EACZ,MAAM5C,EAAmB75B,GAAoB96B,CAAG,EAC1Cw3D,EAAkB7C,EAAiB,CAAC,IAAM,GAAKA,EAAiB,CAAC,IAAM,GAAKA,EAAiB,CAAC,IAAM,GAAKA,EAAiB,CAAC,IAAM,EACjI8C,EAAkBD,EAAkBxjC,EAAO,MAAM,CAAC,EAAI,KAC5D,QAAS50B,EAAI,EAAGylD,EAAI,EAAG/rB,EAAKu+B,EAAI,OAAQj4D,EAAI05B,EAAI15B,IAC9C,OAAQi4D,EAAIj4D,CAAC,EAAI,EAAC,CAChB,KAAK+vB,GAAI,UACPxE,EAAIhY,EAAKkyC,GAAG,EACZ35B,EAAIvY,EAAKkyC,GAAG,EACZ,MAAMvjD,EAAQqR,EAAKkyC,GAAG,EAChB/jD,EAAS6R,EAAKkyC,GAAG,EACjB6S,EAAK/sC,EAAIrpB,EACTq2D,EAAKzsC,EAAIpqB,EACfd,EAAI,OAAO2qB,EAAGO,CAAC,EACX5pB,IAAU,GAAKR,IAAW,EAC5Bd,EAAI,OAAO03D,EAAIC,CAAE,GAEjB33D,EAAI,OAAO03D,EAAIxsC,CAAC,EAChBlrB,EAAI,OAAO03D,EAAIC,CAAE,EACjB33D,EAAI,OAAO2qB,EAAGgtC,CAAE,GAEbH,GACHp6C,EAAQ,iBAAiBu3C,EAAkB,CAAChqC,EAAGO,EAAGwsC,EAAIC,CAAE,CAAC,EAE3D33D,EAAI,UAAS,EACb,MACF,KAAKmvB,GAAI,OACPxE,EAAIhY,EAAKkyC,GAAG,EACZ35B,EAAIvY,EAAKkyC,GAAG,EACZ7kD,EAAI,OAAO2qB,EAAGO,CAAC,EACVssC,GACHp6C,EAAQ,iBAAiBu3C,EAAkBhqC,EAAGO,CAAC,EAEjD,MACF,KAAKiE,GAAI,OACPxE,EAAIhY,EAAKkyC,GAAG,EACZ35B,EAAIvY,EAAKkyC,GAAG,EACZ7kD,EAAI,OAAO2qB,EAAGO,CAAC,EACVssC,GACHp6C,EAAQ,iBAAiBu3C,EAAkBhqC,EAAGO,CAAC,EAEjD,MACF,KAAKiE,GAAI,QACPmoC,EAAS3sC,EACT4sC,EAASrsC,EACTP,EAAIhY,EAAKkyC,EAAI,CAAC,EACd35B,EAAIvY,EAAKkyC,EAAI,CAAC,EACd7kD,EAAI,cAAc2S,EAAKkyC,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGl6B,EAAGO,CAAC,EACtE9N,EAAQ,sBAAsBu3C,EAAkB2C,EAAQC,EAAQ5kD,EAAKkyC,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGl6B,EAAGO,EAAGusC,CAAe,EACrI5S,GAAK,EACL,MACF,KAAK11B,GAAI,SACPmoC,EAAS3sC,EACT4sC,EAASrsC,EACTlrB,EAAI,cAAc2qB,EAAGO,EAAGvY,EAAKkyC,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,CAAC,EACtEznC,EAAQ,sBAAsBu3C,EAAkB2C,EAAQC,EAAQ5sC,EAAGO,EAAGvY,EAAKkyC,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAG4S,CAAe,EACrI9sC,EAAIhY,EAAKkyC,EAAI,CAAC,EACd35B,EAAIvY,EAAKkyC,EAAI,CAAC,EACdA,GAAK,EACL,MACF,KAAK11B,GAAI,SACPmoC,EAAS3sC,EACT4sC,EAASrsC,EACTP,EAAIhY,EAAKkyC,EAAI,CAAC,EACd35B,EAAIvY,EAAKkyC,EAAI,CAAC,EACd7kD,EAAI,cAAc2S,EAAKkyC,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGl6B,EAAGO,EAAGP,EAAGO,CAAC,EAClD9N,EAAQ,sBAAsBu3C,EAAkB2C,EAAQC,EAAQ5kD,EAAKkyC,CAAC,EAAGlyC,EAAKkyC,EAAI,CAAC,EAAGl6B,EAAGO,EAAGP,EAAGO,EAAGusC,CAAe,EACjH5S,GAAK,EACL,MACF,KAAK11B,GAAI,UACPnvB,EAAI,UAAS,EACb,KACH,CAECw3D,GACFp6C,EAAQ,wBAAwBu3C,EAAkB8C,CAAe,EAEnEr6C,EAAQ,gBAAgBuN,EAAGO,CAAC,CAC7B,CACD,WAAY,CACV,KAAK,IAAI,WACV,CACD,OAAO0sC,EAAc,GAAM,CACzB,MAAM53D,EAAM,KAAK,IACX63D,EAAc,KAAK,QAAQ,YACjC73D,EAAI,YAAc,KAAK,QAAQ,YAC3B,KAAK,iBACH,OAAO63D,GAAgB,WAAYA,GAAA,MAAAA,EAAa,aAClD73D,EAAI,KAAI,EACRA,EAAI,YAAc63D,EAAY,WAAW73D,EAAK,KAAM+6B,GAA2B/6B,CAAG,EAAGumD,GAAS,MAAM,EACpG,KAAK,iBAAiB,EAAK,EAC3BvmD,EAAI,QAAO,GAEX,KAAK,iBAAiB,EAAI,GAG1B43D,GACF,KAAK,YAAY,KAAK,QAAQ,0BAA2B,GAE3D53D,EAAI,YAAc,KAAK,QAAQ,SAChC,CACD,aAAc,CACZ,KAAK,UAAS,EACd,KAAK,OAAM,CACZ,CACD,KAAK43D,EAAc,GAAM,CACvB,MAAM53D,EAAM,KAAK,IACXy0D,EAAY,KAAK,QAAQ,UACzBC,EAAgB,KAAK,QAAQ,YACnC,IAAIoD,EAAc,GACdpD,IACF10D,EAAI,KAAI,EACRA,EAAI,UAAYy0D,EAAU,WAAWz0D,EAAK,KAAM+6B,GAA2B/6B,CAAG,EAAGumD,GAAS,IAAI,EAC9FuR,EAAc,IAEhB,MAAMpH,EAAY,KAAK,QAAQ,0BAAyB,EACpD,KAAK,gBAAkBA,IAAc,OACnC,KAAK,eACP1wD,EAAI,KAAK,SAAS,EAClB,KAAK,cAAgB,IAErBA,EAAI,KAAI,GAGR83D,GACF93D,EAAI,QAAO,EAET43D,GACF,KAAK,YAAYlH,CAAS,CAE7B,CACD,QAAS,CACP,KAAK,cAAgB,GACrB,KAAK,KAAI,CACV,CACD,YAAa,CACX,KAAK,KAAK,EAAK,EACf,KAAK,OAAO,EAAK,EACjB,KAAK,YAAW,CACjB,CACD,cAAe,CACb,KAAK,cAAgB,GACrB,KAAK,WAAU,CAChB,CACD,iBAAkB,CAChB,KAAK,UAAS,EACd,KAAK,WAAU,CAChB,CACD,mBAAoB,CAClB,KAAK,cAAgB,GACrB,KAAK,UAAS,EACd,KAAK,WAAU,CAChB,CACD,SAAU,CACR,KAAK,YAAW,CACjB,CACD,MAAO,CACL,KAAK,YAAc0B,EACpB,CACD,QAAS,CACP,KAAK,YAAcC,EACpB,CACD,WAAY,CACV,KAAK,QAAQ,WAAahhC,GAC1B,KAAK,QAAQ,gBAAkB,EAC/B,KAAK,QAAQ,EAAI,KAAK,QAAQ,MAAQ,EACtC,KAAK,QAAQ,EAAI,KAAK,QAAQ,MAAQ,CACvC,CACD,SAAU,CACR,MAAM1c,EAAQ,KAAK,iBACb3U,EAAM,KAAK,IACjB,GAAI2U,IAAU,OAAW,CACvB3U,EAAI,UAAS,EACb,MACD,CACD,MAAM+3D,EAAU,IAAI,OACd1f,EAAYr4C,EAAI,aAAc,EAAC,WAAU,EAC/C,SAAW,CACT,UAAA+zB,EACA,EAAApJ,EACA,EAAAO,EACA,SAAA8sC,EACA,KAAAnjD,CACD,IAAIF,EACHojD,EAAQ,QAAQljD,EAAM,IAAI,UAAUkf,CAAS,EAAE,gBAAgBskB,CAAS,EAAE,UAAU1tB,EAAGO,CAAC,EAAE,MAAM8sC,EAAU,CAACA,CAAQ,CAAC,EAEtHh4D,EAAI,KAAK+3D,CAAO,EAChB/3D,EAAI,UAAS,EACb,OAAO,KAAK,gBACb,CACD,eAAei4D,EAAS,CACtB,KAAK,QAAQ,YAAcA,CAC5B,CACD,eAAeA,EAAS,CACtB,KAAK,QAAQ,YAAcA,CAC5B,CACD,UAAUpgC,EAAO,CACf,KAAK,QAAQ,WAAaA,EAAQ,GACnC,CACD,WAAWqgC,EAAS,CAClB,KAAK,QAAQ,QAAU,CAACA,CACzB,CACD,QAAQC,EAAa5vD,EAAM,OACzB,MAAM6vD,EAAU,KAAK,WAAW,IAAID,CAAW,EACzC/6C,EAAU,KAAK,QACrB,GAAI,CAACg7C,EACH,MAAM,IAAI,MAAM,uBAAuBD,CAAW,EAAE,EActD,GAZA/6C,EAAQ,WAAag7C,EAAQ,YAAc9mC,IACvClU,EAAQ,WAAW,CAAC,IAAM,GAAKA,EAAQ,WAAW,CAAC,IAAM,IAC3D2U,GAAK,gCAAkComC,CAAW,EAEhD5vD,EAAO,GACTA,EAAO,CAACA,EACR6U,EAAQ,cAAgB,IAExBA,EAAQ,cAAgB,EAE1B,KAAK,QAAQ,KAAOg7C,EACpB,KAAK,QAAQ,SAAW7vD,EACpB6vD,EAAQ,YACV,OAEF,MAAMxsD,EAAOwsD,EAAQ,YAAc,aAC7BC,IAAWxkC,EAAAukC,EAAQ,iBAAR,YAAAvkC,EAAwB,MAAO,IAAIjoB,CAAI,MAAMwsD,EAAQ,YAAY,GAClF,IAAIE,EAAO,SACPF,EAAQ,MACVE,EAAO,MACEF,EAAQ,OACjBE,EAAO,QAET,MAAMC,EAASH,EAAQ,OAAS,SAAW,SAC3C,IAAII,EAAkBjwD,EAClBA,EAAOklD,GACT+K,EAAkB/K,GACTllD,EAAOmlD,KAChB8K,EAAkB9K,IAEpB,KAAK,QAAQ,cAAgBnlD,EAAOiwD,EACpC,KAAK,IAAI,KAAO,GAAGD,CAAM,IAAID,CAAI,IAAIE,CAAe,MAAMH,CAAQ,EACnE,CACD,qBAAqBvsD,EAAM,CACzB,KAAK,QAAQ,kBAAoBA,CAClC,CACD,YAAY2sD,EAAM,CAChB,KAAK,QAAQ,SAAWA,CACzB,CACD,SAAS9tC,EAAGO,EAAG,CACb,KAAK,QAAQ,EAAI,KAAK,QAAQ,OAASP,EACvC,KAAK,QAAQ,EAAI,KAAK,QAAQ,OAASO,CACxC,CACD,mBAAmBP,EAAGO,EAAG,CACvB,KAAK,WAAW,CAACA,CAAC,EAClB,KAAK,SAASP,EAAGO,CAAC,CACnB,CACD,cAAchnB,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,EAAG,CAC9B,KAAK,QAAQ,WAAa,CAACnB,EAAGC,EAAGuI,EAAGN,EAAG7J,EAAG8C,CAAC,EAC3C,KAAK,QAAQ,gBAAkB,KAAK,MAAMnB,EAAGC,CAAC,EAC9C,KAAK,QAAQ,EAAI,KAAK,QAAQ,MAAQ,EACtC,KAAK,QAAQ,EAAI,KAAK,QAAQ,MAAQ,CACvC,CACD,UAAW,CACT,KAAK,SAAS,EAAG,KAAK,QAAQ,OAAO,CACtC,CAMD,UAAUw6C,EAAWh0B,EAAGO,EAAGwtC,EAAsBC,EAAwB,CACvE,MAAM34D,EAAM,KAAK,IACXod,EAAU,KAAK,QACfggC,EAAOhgC,EAAQ,KACfw7C,EAAoBx7C,EAAQ,kBAC5B46C,EAAW56C,EAAQ,SAAWA,EAAQ,cACtCy7C,EAAiBD,EAAoBlnC,GAAkB,iBACvDonC,EAAiB,CAAC,EAAEF,EAAoBlnC,GAAkB,kBAC1DqnC,EAAc37C,EAAQ,aAAe,CAACggC,EAAK,YAC3C4b,EAAgB57C,EAAQ,eAAiB,CAACggC,EAAK,YACrD,IAAIvoC,EAIJ,IAHIuoC,EAAK,iBAAmB0b,GAAkBC,GAAeC,KAC3DnkD,EAAOuoC,EAAK,iBAAiB,KAAK,WAAYuB,CAAS,GAErDvB,EAAK,iBAAmB2b,GAAeC,EAAe,CACxDh5D,EAAI,KAAI,EACRA,EAAI,UAAU2qB,EAAGO,CAAC,EAClBlrB,EAAI,MAAMg4D,EAAU,CAACA,CAAQ,EAC7B,IAAIrD,EAUJ,IATIkE,IAAmBnnC,GAAkB,MAAQmnC,IAAmBnnC,GAAkB,eAChFgnC,GACF/D,EAAmB30D,EAAI,eACvBA,EAAI,aAAa,GAAG04D,CAAoB,EACxC14D,EAAI,KAAK81B,EAAA,KAAKi9B,GAAAkG,IAAL,UAAoBpkD,EAAM8/C,EAAkB+D,EAAqB,GAE1E14D,EAAI,KAAK6U,CAAI,GAGbgkD,IAAmBnnC,GAAkB,QAAUmnC,IAAmBnnC,GAAkB,YACtF,GAAIinC,EAAwB,CAC1BhE,MAAqB30D,EAAI,gBACzBA,EAAI,aAAa,GAAG24D,CAAsB,EAC1C,KAAM,CACJ,EAAAz0D,EACA,EAAAC,EACA,EAAAuI,EACA,EAAAN,CACD,EAAGuoD,EACEuE,EAAsBxmD,GAAK,iBAAiBimD,CAAsB,EAClExgB,EAASzlC,GAAK,UAAU,CAACxO,EAAGC,EAAGuI,EAAGN,EAAG,EAAG,CAAC,EAAG8sD,CAAmB,EAC/D,CAACrkC,EAAIC,EAAE,EAAIpiB,GAAK,8BAA8BylC,CAAM,EAC1Dn4C,EAAI,WAAa,KAAK,IAAI60B,EAAIC,EAAE,EAAIkjC,EACpCh4D,EAAI,OAAO81B,EAAA,KAAKi9B,GAAAkG,IAAL,UAAoBpkD,EAAM8/C,EAAkBgE,EAAuB,CACxF,MACU34D,EAAI,WAAag4D,EACjBh4D,EAAI,OAAO6U,CAAI,EAGnB7U,EAAI,QAAO,CACjB,MACU64D,IAAmBnnC,GAAkB,MAAQmnC,IAAmBnnC,GAAkB,cACpF1xB,EAAI,SAAS2+C,EAAWh0B,EAAGO,CAAC,GAE1B2tC,IAAmBnnC,GAAkB,QAAUmnC,IAAmBnnC,GAAkB,cACtF1xB,EAAI,WAAW2+C,EAAWh0B,EAAGO,CAAC,EAG9B4tC,IACY,KAAK,mBAAL,KAAK,iBAAqB,KAClC,KAAK,CACT,UAAWh+B,GAAoB96B,CAAG,EAClC,EAAA2qB,EACA,EAAAO,EACA,SAAA8sC,EACA,KAAAnjD,CACR,CAAO,CAEJ,CACD,IAAI,yBAA0B,CAC5B,KAAM,CACJ,QAAS7U,CACf,EAAQ,KAAK,eAAe,UAAU,0BAA2B,GAAI,EAAE,EACnEA,EAAI,MAAM,IAAK,CAAC,EAChBA,EAAI,SAAS,IAAK,EAAG,EAAE,EACvB,MAAMtD,EAAOsD,EAAI,aAAa,EAAG,EAAG,GAAI,EAAE,EAAE,KAC5C,IAAIykB,EAAU,GACd,QAASrlB,EAAI,EAAGA,EAAI1C,EAAK,OAAQ0C,GAAK,EACpC,GAAI1C,EAAK0C,CAAC,EAAI,GAAK1C,EAAK0C,CAAC,EAAI,IAAK,CAChCqlB,EAAU,GACV,KACD,CAEH,OAAOwM,GAAO,KAAM,0BAA2BxM,CAAO,CACvD,CACD,SAAS00C,EAAQ,CACf,MAAM/7C,EAAU,KAAK,QACfggC,EAAOhgC,EAAQ,KACrB,GAAIggC,EAAK,YACP,OAAO,KAAK,cAAc+b,CAAM,EAElC,MAAMnB,EAAW56C,EAAQ,SACzB,GAAI46C,IAAa,EACf,OAEF,MAAMh4D,EAAM,KAAK,IACXo5D,EAAgBh8C,EAAQ,cACxBi8C,EAAcj8C,EAAQ,YACtBk8C,EAAcl8C,EAAQ,YACtBm8C,EAAgBn8C,EAAQ,cACxBo8C,EAAap8C,EAAQ,WAAam8C,EAClCE,EAAeN,EAAO,OACtBO,EAAWtc,EAAK,SAChBuc,EAAaD,EAAW,EAAI,GAC5BE,EAAkBxc,EAAK,gBACvByc,EAAoB7B,EAAW56C,EAAQ,WAAW,CAAC,EACnD08C,EAAiB18C,EAAQ,oBAAsBsU,GAAkB,MAAQ,CAAC0rB,EAAK,iBAAmB,CAAChgC,EAAQ,YACjHpd,EAAI,KAAI,EACRA,EAAI,UAAU,GAAGod,EAAQ,UAAU,EACnCpd,EAAI,UAAUod,EAAQ,EAAGA,EAAQ,EAAIA,EAAQ,QAAQ,EACjDm8C,EAAgB,EAClBv5D,EAAI,MAAMw5D,EAAY,EAAE,EAExBx5D,EAAI,MAAMw5D,EAAY,CAAC,EAEzB,IAAId,EAAsBC,EAC1B,GAAIv7C,EAAQ,YAAa,CACvBpd,EAAI,KAAI,EACR,MAAMmnD,EAAU/pC,EAAQ,UAAU,WAAWpd,EAAK,KAAM+6B,GAA2B/6B,CAAG,EAAGumD,GAAS,IAAI,EACtGmS,EAAuB59B,GAAoB96B,CAAG,EAC9CA,EAAI,QAAO,EACXA,EAAI,UAAYmnD,CACjB,CACD,GAAI/pC,EAAQ,cAAe,CACzBpd,EAAI,KAAI,EACR,MAAMmnD,EAAU/pC,EAAQ,YAAY,WAAWpd,EAAK,KAAM+6B,GAA2B/6B,CAAG,EAAGumD,GAAS,MAAM,EAC1GoS,EAAyB79B,GAAoB96B,CAAG,EAChDA,EAAI,QAAO,EACXA,EAAI,YAAcmnD,CACnB,CACD,IAAI4S,EAAY38C,EAAQ,UACxB,MAAMya,EAAQza,EAAQ,gBACtB,GAAIya,IAAU,GAAKkiC,IAAc,EAAG,CAClC,MAAMlB,EAAiBz7C,EAAQ,kBAAoBsU,GAAkB,kBACjEmnC,IAAmBnnC,GAAkB,QAAUmnC,IAAmBnnC,GAAkB,eACtFqoC,EAAY,KAAK,sBAEzB,MACMA,GAAaliC,EAOf,GALIuhC,IAAkB,IACpBp5D,EAAI,MAAMo5D,EAAeA,CAAa,EACtCW,GAAaX,GAEfp5D,EAAI,UAAY+5D,EACZ3c,EAAK,mBAAoB,CAC3B,MAAMnvC,EAAQ,GACd,IAAI3M,GAAQ,EACZ,UAAW04D,MAASb,EAClBlrD,EAAM,KAAK+rD,GAAM,OAAO,EACxB14D,IAAS04D,GAAM,MAEjBh6D,EAAI,SAASiO,EAAM,KAAK,EAAE,EAAG,EAAG,CAAC,EACjCmP,EAAQ,GAAK9b,GAAQu4D,EAAoBL,EACzCx5D,EAAI,QAAO,EACX,KAAK,QAAO,EACZ,MACD,CACD,IAAI2qB,EAAI,EACNvrB,EACF,IAAKA,EAAI,EAAGA,EAAIq6D,EAAc,EAAEr6D,EAAG,CACjC,MAAM46D,EAAQb,EAAO/5D,CAAC,EACtB,GAAI,OAAO46D,GAAU,SAAU,CAC7BrvC,GAAKgvC,EAAaK,EAAQhC,EAAW,IACrC,QACD,CACD,IAAIiC,GAAgB,GACpB,MAAMhC,IAAW+B,EAAM,QAAUV,EAAc,GAAKD,EAC9C1a,GAAYqb,EAAM,SAClBE,GAASF,EAAM,OACrB,IAAIG,GAASC,EACT94D,EAAQ04D,EAAM,MAClB,GAAIN,EAAU,CACZ,MAAMW,EAAUL,EAAM,SAAWJ,EAC3BU,EAAK,EAAEN,EAAM,QAAUK,EAAQ,CAAC,EAAI/4D,EAAQ,IAAOu4D,EACnDU,GAAKF,EAAQ,CAAC,EAAIR,EACxBv4D,EAAQ+4D,EAAU,CAACA,EAAQ,CAAC,EAAI/4D,EAChC64D,GAAUG,EAAKlB,EACfgB,GAAWzvC,EAAI4vC,IAAMnB,CAC7B,MACQe,GAAUxvC,EAAIyuC,EACdgB,EAAU,EAEZ,GAAIhd,EAAK,WAAa97C,EAAQ,EAAG,CAC/B,MAAMk5D,EAAgBx6D,EAAI,YAAY2+C,EAAS,EAAE,MAAQ,IAAOqZ,EAAWoB,EAC3E,GAAI93D,EAAQk5D,GAAiB,KAAK,wBAAyB,CACzD,MAAMC,EAAkBn5D,EAAQk5D,EAChCP,GAAgB,GAChBj6D,EAAI,KAAI,EACRA,EAAI,MAAMy6D,EAAiB,CAAC,EAC5BN,IAAWM,CACrB,MAAmBn5D,IAAUk5D,IACnBL,KAAY74D,EAAQk5D,GAAiB,IAAOxC,EAAWoB,EAE1D,CACD,GAAI,KAAK,iBAAmBY,EAAM,UAAY5c,EAAK,cACjD,GAAI0c,GAAkB,CAACI,GACrBl6D,EAAI,SAAS2+C,GAAWwb,GAASC,CAAO,UAExC,KAAK,UAAUzb,GAAWwb,GAASC,EAAS1B,EAAsBC,CAAsB,EACpFuB,GAAQ,CACV,MAAMQ,EAAgBP,GAAUnC,EAAWkC,GAAO,OAAO,EAAId,EACvDuB,EAAgBP,EAAUpC,EAAWkC,GAAO,OAAO,EAAId,EAC7D,KAAK,UAAUc,GAAO,SAAUQ,EAAeC,EAAejC,EAAsBC,CAAsB,CAC3G,EAGL,MAAMiC,EAAYlB,EAAWp4D,EAAQu4D,EAAoB5B,GAAUsB,EAAgBj4D,EAAQu4D,EAAoB5B,GAAUsB,EACzH5uC,GAAKiwC,EACDX,IACFj6D,EAAI,QAAO,CAEd,CACG05D,EACFt8C,EAAQ,GAAKuN,EAEbvN,EAAQ,GAAKuN,EAAI6uC,EAEnBx5D,EAAI,QAAO,EACX,KAAK,QAAO,CAEb,CACD,cAAcm5D,EAAQ,CACpB,MAAMn5D,EAAM,KAAK,IACXod,EAAU,KAAK,QACfggC,EAAOhgC,EAAQ,KACf46C,EAAW56C,EAAQ,SACnBm8C,EAAgBn8C,EAAQ,cACxBu8C,EAAavc,EAAK,SAAW,EAAI,GACjCic,EAAcj8C,EAAQ,YACtBk8C,EAAcl8C,EAAQ,YACtBo8C,EAAap8C,EAAQ,WAAam8C,EAClCsB,EAAaz9C,EAAQ,YAAckU,GACnCmoC,EAAeN,EAAO,OACtB2B,EAAkB19C,EAAQ,oBAAsBsU,GAAkB,UACxE,IAAItyB,EAAG46D,EAAO14D,EAAOy5D,EACrB,GAAI,EAAAD,GAAmB9C,IAAa,GASpC,KANA,KAAK,wBAAwB,CAAC,EAAI,GAClC,KAAK,2BAA6B,KAClCh4D,EAAI,KAAI,EACRA,EAAI,UAAU,GAAGod,EAAQ,UAAU,EACnCpd,EAAI,UAAUod,EAAQ,EAAGA,EAAQ,EAAIA,EAAQ,QAAQ,EACrDpd,EAAI,MAAMw5D,EAAYD,CAAa,EAC9Bn6D,EAAI,EAAGA,EAAIq6D,EAAc,EAAEr6D,EAAG,CAEjC,GADA46D,EAAQb,EAAO/5D,CAAC,EACZ,OAAO46D,GAAU,SAAU,CAC7Be,EAAgBpB,EAAaK,EAAQhC,EAAW,IAChD,KAAK,IAAI,UAAU+C,EAAe,CAAC,EACnC39C,EAAQ,GAAK29C,EAAgBvB,EAC7B,QACD,CACD,MAAMvB,GAAW+B,EAAM,QAAUV,EAAc,GAAKD,EAC9CxO,EAAezN,EAAK,qBAAqB4c,EAAM,cAAc,EACnE,GAAI,CAACnP,EAAc,CACjB94B,GAAK,oBAAoBioC,EAAM,cAAc,qBAAqB,EAClE,QACD,CACG,KAAK,iBACP,KAAK,gBAAkBA,EACvB,KAAK,KAAI,EACTh6D,EAAI,MAAMg4D,EAAUA,CAAQ,EAC5Bh4D,EAAI,UAAU,GAAG66D,CAAU,EAC3B,KAAK,oBAAoBhQ,CAAY,EACrC,KAAK,QAAO,GAGdvpD,EADoBoR,GAAK,eAAe,CAACsnD,EAAM,MAAO,CAAC,EAAGa,CAAU,EAChD,CAAC,EAAI7C,EAAWC,EACpCj4D,EAAI,UAAUsB,EAAO,CAAC,EACtB8b,EAAQ,GAAK9b,EAAQk4D,CACtB,CACDx5D,EAAI,QAAO,EACX,KAAK,gBAAkB,KACxB,CACD,aAAag7D,EAAQC,EAAQ,CAAE,CAC/B,sBAAsBD,EAAQC,EAAQC,EAAKC,EAAKC,EAAKC,EAAK,CACxD,KAAK,IAAI,KAAKH,EAAKC,EAAKC,EAAMF,EAAKG,EAAMF,CAAG,EAC5C,KAAK,IAAI,OACT,KAAK,QAAO,CACb,CACD,kBAAkBtU,EAAI,CACpB,IAAIM,EACJ,GAAIN,EAAG,CAAC,IAAM,gBAAiB,CAC7B,MAAMrsB,EAAQqsB,EAAG,CAAC,EACZ+D,EAAgB,KAAK,eAAiB9vB,GAAoB,KAAK,GAAG,EAClE6vB,EAAwB,CAC5B,qBAAsB3qD,GAAO,IAAIsyD,GAAetyD,EAAK,KAAK,WAAY,KAAK,KAAM,KAAK,cAAe,KAAK,cAAe,CACvH,sBAAuB,KAAK,sBAC5B,mBAAoB,KAAK,kBACnC,CAAS,CACT,EACMmnD,EAAU,IAAIyF,GAAc/F,EAAIrsB,EAAO,KAAK,IAAKmwB,EAAuBC,CAAa,CAC3F,MACMzD,EAAU,KAAK,YAAYN,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAEzC,OAAOM,CACR,CACD,iBAAkB,CAChB,KAAK,QAAQ,YAAc,KAAK,kBAAkB,SAAS,EAC3D,KAAK,QAAQ,cAAgB,EAC9B,CACD,eAAgB,CACd,KAAK,QAAQ,UAAY,KAAK,kBAAkB,SAAS,EACzD,KAAK,QAAQ,YAAc,EAC5B,CACD,kBAAkB78B,EAAGW,EAAG9mB,EAAG,CACzB,KAAK,IAAI,YAAc,KAAK,QAAQ,YAAcuO,GAAK,aAAa4X,EAAGW,EAAG9mB,CAAC,EAC3E,KAAK,QAAQ,cAAgB,EAC9B,CACD,sBAAuB,CACrB,KAAK,IAAI,YAAc,KAAK,QAAQ,YAAc,cAClD,KAAK,QAAQ,cAAgB,EAC9B,CACD,gBAAgBmmB,EAAGW,EAAG9mB,EAAG,CACvB,KAAK,IAAI,UAAY,KAAK,QAAQ,UAAYuO,GAAK,aAAa4X,EAAGW,EAAG9mB,CAAC,EACvE,KAAK,QAAQ,YAAc,EAC5B,CACD,oBAAqB,CACnB,KAAK,IAAI,UAAY,KAAK,QAAQ,UAAY,cAC9C,KAAK,QAAQ,YAAc,EAC5B,CACD,YAAYy6C,EAAO+N,EAAS,KAAM,CAChC,IAAIxF,EACJ,OAAI,KAAK,eAAe,IAAIvI,CAAK,EAC/BuI,EAAU,KAAK,eAAe,IAAIvI,CAAK,GAEvCuI,EAAUqD,GAAkB,KAAK,UAAU5L,CAAK,CAAC,EACjD,KAAK,eAAe,IAAIA,EAAOuI,CAAO,GAEpCwF,IACFxF,EAAQ,OAASwF,GAEZxF,CACR,CACD,YAAYvI,EAAO,CACjB,GAAI,CAAC,KAAK,eACR,OAEF,MAAM5+C,EAAM,KAAK,IACjB,KAAK,KAAI,EACT,MAAMmnD,EAAU,KAAK,YAAYvI,CAAK,EACtC5+C,EAAI,UAAYmnD,EAAQ,WAAWnnD,EAAK,KAAM+6B,GAA2B/6B,CAAG,EAAGumD,GAAS,OAAO,EAC/F,MAAM+U,EAAMvgC,GAA2B/6B,CAAG,EAC1C,GAAIs7D,EAAK,CACP,KAAM,CACJ,MAAAh6D,EACA,OAAAR,CACR,EAAUd,EAAI,OACF,CAACs1B,EAAIC,EAAIC,EAAIC,CAAE,EAAI/iB,GAAK,2BAA2B,CAAC,EAAG,EAAGpR,EAAOR,CAAM,EAAGw6D,CAAG,EACnF,KAAK,IAAI,SAAShmC,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,CAAE,CAChD,MACM,KAAK,IAAI,SAAS,MAAO,MAAO,KAAM,IAAI,EAE5C,KAAK,QAAQ,KAAK,QAAQ,0BAA2B,GACrD,KAAK,QAAO,CACb,CACD,kBAAmB,CACjBvD,GAAY,kCAAkC,CAC/C,CACD,gBAAiB,CACfA,GAAY,gCAAgC,CAC7C,CACD,sBAAsB26B,EAAQlG,EAAM,CAClC,GAAK,KAAK,iBAGV,KAAK,KAAI,EACT,KAAK,mBAAmB,KAAK,KAAK,aAAa,EAC3CkG,GACF,KAAK,UAAU,GAAGA,CAAM,EAE1B,KAAK,cAAgB7xB,GAAoB,KAAK,GAAG,EAC7C2rB,GAAM,CACR,MAAMnlD,EAAQmlD,EAAK,CAAC,EAAIA,EAAK,CAAC,EACxB3lD,EAAS2lD,EAAK,CAAC,EAAIA,EAAK,CAAC,EAC/B,KAAK,IAAI,KAAKA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGnlD,EAAOR,CAAM,EAC7C,KAAK,QAAQ,iBAAiBg6B,GAAoB,KAAK,GAAG,EAAG2rB,CAAI,EACjE,KAAK,KAAI,EACT,KAAK,QAAO,CACb,CACF,CACD,qBAAsB,CACf,KAAK,iBAGV,KAAK,QAAO,EACZ,KAAK,cAAgB,KAAK,mBAAmB,IAAG,EACjD,CACD,WAAW8U,EAAO,CAChB,GAAI,CAAC,KAAK,eACR,OAEF,KAAK,KAAI,EACL,KAAK,cACP,KAAK,aAAY,EACjB,KAAK,QAAQ,YAAc,MAE7B,MAAMC,EAAa,KAAK,IACnBD,EAAM,UACTr9C,GAAK,oCAAoC,EAEvCq9C,EAAM,UACRxpC,GAAK,gCAAgC,EAEvC,MAAM4iC,EAAmB75B,GAAoB0gC,CAAU,EAIvD,GAHID,EAAM,QACRC,EAAW,UAAU,GAAGD,EAAM,MAAM,EAElC,CAACA,EAAM,KACT,MAAM,IAAI,MAAM,2BAA2B,EAE7C,IAAI56D,EAAS+R,GAAK,2BAA2B6oD,EAAM,KAAMzgC,GAAoB0gC,CAAU,CAAC,EACxF,MAAMC,EAAe,CAAC,EAAG,EAAGD,EAAW,OAAO,MAAOA,EAAW,OAAO,MAAM,EAC7E76D,EAAS+R,GAAK,UAAU/R,EAAQ86D,CAAY,GAAK,CAAC,EAAG,EAAG,EAAG,CAAC,EAC5D,MAAM1jC,EAAU,KAAK,MAAMp3B,EAAO,CAAC,CAAC,EAC9Bq3B,EAAU,KAAK,MAAMr3B,EAAO,CAAC,CAAC,EAC9By0D,EAAa,KAAK,IAAI,KAAK,KAAKz0D,EAAO,CAAC,CAAC,EAAIo3B,EAAS,CAAC,EACvDs9B,EAAc,KAAK,IAAI,KAAK,KAAK10D,EAAO,CAAC,CAAC,EAAIq3B,EAAS,CAAC,EAC9D,KAAK,QAAQ,uBAAuB,CAAC,EAAG,EAAGo9B,EAAYC,CAAW,CAAC,EACnE,IAAIU,EAAU,UAAY,KAAK,WAC3BwF,EAAM,QACRxF,GAAW,UAAY,KAAK,eAAiB,GAE/C,MAAMC,EAAgB,KAAK,eAAe,UAAUD,EAASX,EAAYC,CAAW,EAC9EqG,EAAW1F,EAAc,QAC/B0F,EAAS,UAAU,CAAC3jC,EAAS,CAACC,CAAO,EACrC0jC,EAAS,UAAU,GAAG/G,CAAgB,EAClC4G,EAAM,MACR,KAAK,WAAW,KAAK,CACnB,OAAQvF,EAAc,OACtB,QAAS0F,EACT,QAAA3jC,EACA,QAAAC,EACA,QAASujC,EAAM,MAAM,QACrB,SAAUA,EAAM,MAAM,SACtB,YAAaA,EAAM,MAAM,aAAe,KACxC,sBAAuB,IAC/B,CAAO,GAEDC,EAAW,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACxCA,EAAW,UAAUzjC,EAASC,CAAO,EACrCwjC,EAAW,KAAI,GAEjB7J,GAAa6J,EAAYE,CAAQ,EACjC,KAAK,IAAMA,EACX,KAAK,UAAU,CAAC,CAAC,KAAM,aAAa,EAAG,CAAC,KAAM,CAAC,EAAG,CAAC,KAAM,CAAC,CAAC,CAAC,EAC5D,KAAK,WAAW,KAAKF,CAAU,EAC/B,KAAK,YACN,CACD,SAASD,EAAO,CACd,GAAI,CAAC,KAAK,eACR,OAEF,KAAK,aACL,MAAMG,EAAW,KAAK,IAChB17D,EAAM,KAAK,WAAW,IAAG,EAG/B,GAFA,KAAK,IAAMA,EACX,KAAK,IAAI,sBAAwB,GAC7Bu7D,EAAM,MACR,KAAK,UAAY,KAAK,WAAW,IAAG,EACpC,KAAK,QAAO,MACP,CACL,KAAK,IAAI,UACT,MAAMI,EAAa7gC,GAAoB,KAAK,GAAG,EAC/C,KAAK,QAAO,EACZ,KAAK,IAAI,OACT,KAAK,IAAI,aAAa,GAAG6gC,CAAU,EACnC,MAAM1F,EAAWvjD,GAAK,2BAA2B,CAAC,EAAG,EAAGgpD,EAAS,OAAO,MAAOA,EAAS,OAAO,MAAM,EAAGC,CAAU,EAClH,KAAK,IAAI,UAAUD,EAAS,OAAQ,EAAG,CAAC,EACxC,KAAK,IAAI,UACT,KAAK,QAAQzF,CAAQ,CACtB,CACF,CACD,gBAAgBxnD,EAAIsmB,EAAMhB,EAAW44B,EAAQiP,EAAc,CAQzD,GAPA9lC,EAAA,KAAK+8B,GAAAmB,IAAL,WACAlC,GAAkB,KAAK,GAAG,EAC1B,KAAK,IAAI,OACT,KAAK,KAAI,EACL,KAAK,eACP,KAAK,IAAI,aAAa,GAAG,KAAK,aAAa,EAEzC/8B,EAAM,CACR,MAAMzzB,EAAQyzB,EAAK,CAAC,EAAIA,EAAK,CAAC,EACxBj0B,EAASi0B,EAAK,CAAC,EAAIA,EAAK,CAAC,EAC/B,GAAI6mC,GAAgB,KAAK,oBAAqB,CAC5C7nC,EAAYA,EAAU,QACtBA,EAAU,CAAC,GAAKgB,EAAK,CAAC,EACtBhB,EAAU,CAAC,GAAKgB,EAAK,CAAC,EACtBA,EAAOA,EAAK,QACZA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,EACpBA,EAAK,CAAC,EAAIzzB,EACVyzB,EAAK,CAAC,EAAIj0B,EACV,KAAM,CAACmpD,EAAQC,CAAM,EAAIx3C,GAAK,8BAA8BooB,GAAoB,KAAK,GAAG,CAAC,EACnF,CACJ,cAAA+gC,CACD,EAAG,KACExQ,EAAc,KAAK,KAAK/pD,EAAQ,KAAK,aAAeu6D,CAAa,EACjEvQ,EAAe,KAAK,KAAKxqD,EAAS,KAAK,aAAe+6D,CAAa,EACzE,KAAK,iBAAmB,KAAK,cAAc,OAAOxQ,EAAaC,CAAY,EAC3E,KAAM,CACJ,OAAA5rD,EACA,QAAAwI,CACV,EAAY,KAAK,iBACT,KAAK,oBAAoB,IAAIuG,EAAI/O,CAAM,EACvC,KAAK,iBAAiB,SAAW,KAAK,IACtC,KAAK,IAAMwI,EACX,KAAK,IAAI,OACT,KAAK,IAAI,aAAa+hD,EAAQ,EAAG,EAAG,CAACC,EAAQ,EAAGppD,EAASopD,CAAM,EAC/D4H,GAAkB,KAAK,GAAG,CAClC,MACQA,GAAkB,KAAK,GAAG,EAC1B,KAAK,QAAO,EACZ,KAAK,IAAI,KAAK/8B,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGzzB,EAAOR,CAAM,EAC7C,KAAK,IAAI,OACT,KAAK,IAAI,WAEZ,CACD,KAAK,QAAU,IAAIyvD,GAAiB,KAAK,IAAI,OAAO,MAAO,KAAK,IAAI,OAAO,MAAM,EACjF,KAAK,UAAU,GAAGx8B,CAAS,EAC3B,KAAK,UAAU,GAAG44B,CAAM,CACzB,CACD,eAAgB,CACV,KAAK,mBACP,KAAK,IAAI,UACT72B,EAAA,KAAKg9B,GAAAoB,IAAL,WACA,KAAK,IAAM,KAAK,iBAAiB,SACjC,OAAO,KAAK,iBAAiB,SAC7B,OAAO,KAAK,iBAEf,CACD,sBAAsBhzD,EAAK,CACzB,GAAI,CAAC,KAAK,eACR,OAEF,MAAMm7C,EAAQn7C,EAAI,MAClBA,EAAM,KAAK,UAAUA,EAAI,KAAMA,CAAG,EAClCA,EAAI,MAAQm7C,EACZ,MAAMr8C,EAAM,KAAK,IACXg6D,EAAQ,KAAK,gBACnB,GAAIA,IACEA,EAAM,WAAa,SACrBA,EAAM,SAAWtK,GAAkBxuD,CAAG,GAEpC84D,EAAM,UAAU,CAClBA,EAAM,SAASh6D,CAAG,EAClB,MACD,CAEH,MAAMkwD,EAAO,KAAK,kBAAkBhvD,CAAG,EACjC4zD,EAAa5E,EAAK,OACxBlwD,EAAI,KAAI,EACRA,EAAI,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjCA,EAAI,UAAU80D,EAAY5E,EAAK,QAASA,EAAK,OAAO,EACpDlwD,EAAI,QAAO,EACX,KAAK,QAAO,CACb,CACD,4BAA4BkB,EAAK+oD,EAAQ6R,EAAQ,EAAGC,EAAQ,EAAG7R,EAAQ8R,EAAW,CAChF,GAAI,CAAC,KAAK,eACR,OAEF96D,EAAM,KAAK,UAAUA,EAAI,KAAMA,CAAG,EAClC,MAAMlB,EAAM,KAAK,IACjBA,EAAI,KAAI,EACR,MAAM20D,EAAmB75B,GAAoB96B,CAAG,EAChDA,EAAI,UAAUiqD,EAAQ6R,EAAOC,EAAO7R,EAAQ,EAAG,CAAC,EAChD,MAAMgG,EAAO,KAAK,kBAAkBhvD,CAAG,EACvClB,EAAI,aAAa,EAAG,EAAG,EAAG,EAAGkwD,EAAK,QAAUyE,EAAiB,CAAC,EAAGzE,EAAK,QAAUyE,EAAiB,CAAC,CAAC,EACnG,QAASv1D,EAAI,EAAG05B,EAAKkjC,EAAU,OAAQ58D,EAAI05B,EAAI15B,GAAK,EAAG,CACrD,MAAM68D,EAAQvpD,GAAK,UAAUiiD,EAAkB,CAAC1K,EAAQ6R,EAAOC,EAAO7R,EAAQ8R,EAAU58D,CAAC,EAAG48D,EAAU58D,EAAI,CAAC,CAAC,CAAC,EACvG,CAACurB,EAAGO,CAAC,EAAIxY,GAAK,eAAe,CAAC,EAAG,CAAC,EAAGupD,CAAK,EAChDj8D,EAAI,UAAUkwD,EAAK,OAAQvlC,EAAGO,CAAC,CAChC,CACDlrB,EAAI,QAAO,EACX,KAAK,QAAO,CACb,CACD,2BAA2BmtB,EAAQ,CACjC,GAAI,CAAC,KAAK,eACR,OAEF,MAAMntB,EAAM,KAAK,IACXy0D,EAAY,KAAK,QAAQ,UACzBC,EAAgB,KAAK,QAAQ,YACnC,UAAW91D,KAASuuB,EAAQ,CAC1B,KAAM,CACJ,KAAAzwB,EACA,MAAA4E,EACA,OAAAR,EACA,UAAAizB,CACD,EAAGn1B,EACEk2D,EAAa,KAAK,eAAe,UAAU,aAAcxzD,EAAOR,CAAM,EACtE41D,EAAU5B,EAAW,QAC3B4B,EAAQ,KAAI,EACZ,MAAMx1D,EAAM,KAAK,UAAUxE,EAAMkC,CAAK,EACtC8yD,GAAmBgF,EAASx1D,CAAG,EAC/Bw1D,EAAQ,yBAA2B,YACnCA,EAAQ,UAAYhC,EAAgBD,EAAU,WAAWiC,EAAS,KAAM37B,GAA2B/6B,CAAG,EAAGumD,GAAS,IAAI,EAAIkO,EAC1HiC,EAAQ,SAAS,EAAG,EAAGp1D,EAAOR,CAAM,EACpC41D,EAAQ,QAAO,EACf12D,EAAI,KAAI,EACRA,EAAI,UAAU,GAAG+zB,CAAS,EAC1B/zB,EAAI,MAAM,EAAG,EAAE,EACfwuD,GAAyBxuD,EAAK80D,EAAW,OAAQ,EAAG,EAAGxzD,EAAOR,EAAQ,EAAG,GAAI,EAAG,CAAC,EACjFd,EAAI,QAAO,CACZ,CACD,KAAK,QAAO,CACb,CACD,kBAAkB4+C,EAAO,CACvB,GAAI,CAAC,KAAK,eACR,OAEF,MAAM+Q,EAAU,KAAK,UAAU/Q,CAAK,EACpC,GAAI,CAAC+Q,EAAS,CACZ59B,GAAK,iCAAiC,EACtC,MACD,CACD,KAAK,wBAAwB49B,CAAO,CACrC,CACD,wBAAwB/Q,EAAOqL,EAAQC,EAAQ8R,EAAW,CACxD,GAAI,CAAC,KAAK,eACR,OAEF,MAAMrM,EAAU,KAAK,UAAU/Q,CAAK,EACpC,GAAI,CAAC+Q,EAAS,CACZ59B,GAAK,iCAAiC,EACtC,MACD,CACD,MAAMzwB,EAAQquD,EAAQ,MAChB7uD,EAAS6uD,EAAQ,OACjB57C,EAAM,GACZ,QAAS3U,EAAI,EAAG05B,EAAKkjC,EAAU,OAAQ58D,EAAI05B,EAAI15B,GAAK,EAClD2U,EAAI,KAAK,CACP,UAAW,CAACk2C,EAAQ,EAAG,EAAGC,EAAQ8R,EAAU58D,CAAC,EAAG48D,EAAU58D,EAAI,CAAC,CAAC,EAChE,EAAG,EACH,EAAG,EACH,EAAGkC,EACH,EAAGR,CACX,CAAO,EAEH,KAAK,6BAA6B6uD,EAAS57C,CAAG,CAC/C,CACD,0BAA0B/T,EAAK,CAC7B,OAAI,KAAK,QAAQ,eAAiB,SAChCA,EAAI,OAAS,KAAK,QAAQ,aAC1BA,EAAI,UAAUA,EAAI,OAAQ,EAAG,CAAC,EAC9BA,EAAI,OAAS,QAERA,EAAI,MACZ,CACD,0BAA0B2vD,EAAS,CACjC,GAAI,KAAK,QAAQ,eAAiB,OAChC,OAAOA,EAAQ,OAEjB,KAAM,CACJ,OAAA7vB,EACA,MAAAx+B,EACA,OAAAR,CACD,EAAG6uD,EACEtI,EAAY,KAAK,eAAe,UAAU,cAAe/lD,EAAOR,CAAM,EACtEwmD,EAASD,EAAU,QACzB,OAAAC,EAAO,OAAS,KAAK,QAAQ,aAC7BA,EAAO,UAAUxnB,EAAQ,EAAG,CAAC,EAC7BwnB,EAAO,OAAS,OACTD,EAAU,MAClB,CACD,wBAAwBsI,EAAS,CAC/B,GAAI,CAAC,KAAK,eACR,OAEF,MAAMruD,EAAQquD,EAAQ,MAChB7uD,EAAS6uD,EAAQ,OACjB3vD,EAAM,KAAK,IAEjB,GADA,KAAK,KAAI,EACL,CAACoxB,GAAU,CACb,KAAM,CACJ,OAAAnd,CACD,EAAGjU,EACAiU,IAAW,QAAUA,IAAW,KAClCjU,EAAI,OAAS,OAEhB,CACDA,EAAI,MAAM,EAAIsB,EAAO,GAAKR,CAAM,EAChC,IAAIo7D,EACJ,GAAIvM,EAAQ,OACVuM,EAAa,KAAK,0BAA0BvM,CAAO,UAC1C,OAAO,aAAgB,YAAcA,aAAmB,aAAe,CAACA,EAAQ,KACzFuM,EAAavM,MACR,CAEL,MAAMrI,EADY,KAAK,eAAe,UAAU,cAAehmD,EAAOR,CAAM,EACnD,QACzB6vD,GAAmBrJ,EAAQqI,CAAO,EAClCuM,EAAa,KAAK,0BAA0B5U,CAAM,CACnD,CACD,MAAMuN,EAAS,KAAK,YAAYqH,EAAYnhC,GAA2B/6B,CAAG,CAAC,EAC3EA,EAAI,sBAAwB+xD,GAAyBj3B,GAAoB96B,CAAG,EAAG2vD,EAAQ,WAAW,EAClGnB,GAAyBxuD,EAAK60D,EAAO,IAAK,EAAG,EAAGA,EAAO,WAAYA,EAAO,YAAa,EAAG,CAAC/zD,EAAQQ,EAAOR,CAAM,EAChH,KAAK,QAAO,EACZ,KAAK,QAAO,CACb,CACD,6BAA6B6uD,EAAS57C,EAAK,CACzC,GAAI,CAAC,KAAK,eACR,OAEF,MAAM/T,EAAM,KAAK,IACjB,IAAIk8D,EACJ,GAAIvM,EAAQ,OACVuM,EAAavM,EAAQ,WAChB,CACL,MAAMjlC,EAAIilC,EAAQ,MACZ3kC,EAAI2kC,EAAQ,OAEZrI,EADY,KAAK,eAAe,UAAU,cAAe58B,EAAGM,CAAC,EAC1C,QACzB2lC,GAAmBrJ,EAAQqI,CAAO,EAClCuM,EAAa,KAAK,0BAA0B5U,CAAM,CACnD,CACD,UAAW5L,KAAS3nC,EAClB/T,EAAI,KAAI,EACRA,EAAI,UAAU,GAAG07C,EAAM,SAAS,EAChC17C,EAAI,MAAM,EAAG,EAAE,EACfwuD,GAAyBxuD,EAAKk8D,EAAYxgB,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAG,EAAG,GAAI,EAAG,CAAC,EACzF17C,EAAI,QAAO,EAEb,KAAK,QAAO,CACb,CACD,0BAA2B,CACpB,KAAK,iBAGV,KAAK,IAAI,SAAS,EAAG,EAAG,EAAG,CAAC,EAC5B,KAAK,QAAO,EACb,CACD,UAAUm8D,EAAK,CAAE,CACjB,eAAeA,EAAKtK,EAAY,CAAE,CAClC,mBAAmBsK,EAAK,CACtB,KAAK,mBAAmB,KAAK,CAC3B,QAAS,EACf,CAAK,CACF,CACD,wBAAwBA,EAAKtK,EAAY,CACnCsK,IAAQ,KACV,KAAK,mBAAmB,KAAK,CAC3B,QAAS,KAAK,sBAAsB,UAAUtK,CAAU,CAChE,CAAO,EAED,KAAK,mBAAmB,KAAK,CAC3B,QAAS,EACjB,CAAO,EAEH,KAAK,eAAiB,KAAK,kBAC5B,CACD,kBAAmB,CACjB,KAAK,mBAAmB,MACxB,KAAK,eAAiB,KAAK,kBAC5B,CACD,aAAc,CAAE,CAChB,WAAY,CAAE,CACd,YAAYuK,EAAS,CACnB,MAAMC,EAAU,KAAK,QAAQ,YAAW,EACpC,KAAK,aACP,KAAK,QAAQ,qBAEV,KAAK,aACR,KAAK,QAAQD,CAAO,EAEtB,MAAMp8D,EAAM,KAAK,IACb,KAAK,cACFq8D,IACC,KAAK,cAAgBhK,GACvBryD,EAAI,KAAK,SAAS,EAElBA,EAAI,KAAI,GAGZ,KAAK,YAAc,MAErB,KAAK,QAAQ,uBAAuB,KAAK,QAAQ,OAAO,EACxDA,EAAI,UAAS,CACd,CACD,qBAAsB,CACpB,GAAI,CAAC,KAAK,2BAA4B,CACpC,MAAMmT,EAAI2nB,GAAoB,KAAK,GAAG,EACtC,GAAI3nB,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,EACzB,KAAK,2BAA6B,EAAI,KAAK,IAAI,KAAK,IAAIA,EAAE,CAAC,CAAC,EAAG,KAAK,IAAIA,EAAE,CAAC,CAAC,CAAC,MACxE,CACL,MAAMmpD,EAAS,KAAK,IAAInpD,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,CAAC,EAC3CopD,EAAQ,KAAK,MAAMppD,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAC7BqpD,EAAQ,KAAK,MAAMrpD,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACnC,KAAK,2BAA6B,KAAK,IAAIopD,EAAOC,CAAK,EAAIF,CAC5D,CACF,CACD,OAAO,KAAK,0BACb,CACD,qBAAsB,CACpB,GAAI,KAAK,wBAAwB,CAAC,IAAM,GAAI,CAC1C,KAAM,CACJ,UAAAvC,CACR,EAAU,KAAK,QACH,CACJ,EAAA71D,EACA,EAAAC,EACA,EAAAuI,EACA,EAAAN,CACR,EAAU,KAAK,IAAI,eACb,IAAI69C,EAAQC,EACZ,GAAI/lD,IAAM,GAAKuI,IAAM,EAAG,CACtB,MAAM6vD,EAAQ,KAAK,IAAIr4D,CAAC,EAClBs4D,EAAQ,KAAK,IAAIpwD,CAAC,EACxB,GAAImwD,IAAUC,EACZ,GAAIzC,IAAc,EAChB9P,EAASC,EAAS,EAAIqS,MACjB,CACL,MAAME,EAAkBF,EAAQxC,EAChC9P,EAASC,EAASuS,EAAkB,EAAI,EAAIA,EAAkB,CAC/D,SACQ1C,IAAc,EACvB9P,EAAS,EAAIsS,EACbrS,EAAS,EAAIsS,MACR,CACL,MAAME,EAAmBH,EAAQxC,EAC3B4C,EAAmBH,EAAQzC,EACjC9P,EAASyS,EAAmB,EAAI,EAAIA,EAAmB,EACvDxS,EAASyS,EAAmB,EAAI,EAAIA,EAAmB,CACxD,CACT,KAAa,CACL,MAAML,EAAS,KAAK,IAAIp4D,EAAIkI,EAAIjI,EAAIuI,CAAC,EAC/B6vD,EAAQ,KAAK,MAAMr4D,EAAGC,CAAC,EACvBq4D,EAAQ,KAAK,MAAM9vD,EAAGN,CAAC,EAC7B,GAAI2tD,IAAc,EAChB9P,EAASuS,EAAQF,EACjBpS,EAASqS,EAAQD,MACZ,CACL,MAAMM,EAAW7C,EAAYuC,EAC7BrS,EAASuS,EAAQI,EAAWJ,EAAQI,EAAW,EAC/C1S,EAASqS,EAAQK,EAAWL,EAAQK,EAAW,CAChD,CACF,CACD,KAAK,wBAAwB,CAAC,EAAI3S,EAClC,KAAK,wBAAwB,CAAC,EAAIC,CACnC,CACD,OAAO,KAAK,uBACb,CACD,iBAAiB2S,EAAa,CAC5B,KAAM,CACJ,IAAA78D,CACD,EAAG,KACE,CACJ,UAAA+5D,CACN,EAAQ,KAAK,QACH,CAAC9P,EAAQC,CAAM,EAAI,KAAK,oBAAmB,EAEjD,GADAlqD,EAAI,UAAY+5D,GAAa,EACzB9P,IAAW,GAAKC,IAAW,EAAG,CAChClqD,EAAI,OAAM,EACV,MACD,CACD,MAAM88D,EAAS98D,EAAI,cAKnB,GAJI68D,GACF78D,EAAI,KAAI,EAEVA,EAAI,MAAMiqD,EAAQC,CAAM,EACpB4S,EAAO,OAAS,EAAG,CACrB,MAAMjlC,EAAQ,KAAK,IAAIoyB,EAAQC,CAAM,EACrClqD,EAAI,YAAY88D,EAAO,IAAInyC,GAAKA,EAAIkN,CAAK,CAAC,EAC1C73B,EAAI,gBAAkB63B,CACvB,CACD73B,EAAI,OAAM,EACN68D,GACF78D,EAAI,QAAO,CAEd,CACD,kBAAmB,CACjB,QAASZ,EAAI,KAAK,mBAAmB,OAAS,EAAGA,GAAK,EAAGA,IACvD,GAAI,CAAC,KAAK,mBAAmBA,CAAC,EAAE,QAC9B,MAAO,GAGX,MAAO,EACR,CACH,EA7+CEyzD,GAAA,YAAAmB,GAAoB,UAAG,CACrB,KAAO,KAAK,WAAW,QAAU,KAAK,aACpC,KAAK,QAAO,EAEd,KAAK,QAAQ,YAAc,KAC3B,KAAK,IAAI,UACL,KAAK,oBACP,KAAK,IAAM,KAAK,aAChB,KAAK,IAAI,OACT,KAAK,IAAI,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtC,KAAK,IAAI,UAAU,KAAK,kBAAmB,EAAG,CAAC,EAC/C,KAAK,IAAI,UACT,KAAK,kBAAoB,KAE5B,EAgBDlB,GAAA,YAAAoB,GAAW,UAAG,CACZ,GAAI,KAAK,WAAY,CACnB,MAAM6I,EAAc,KAAK,cAAc,aAAa,KAAK,WAAW,WAAY,KAAK,WAAW,UAAU,EAC1G,GAAIA,IAAgB,OAAQ,CAC1B,MAAMC,EAAc,KAAK,IAAI,OAC7B,KAAK,IAAI,OAASD,EAClB,KAAK,IAAI,UAAU,KAAK,IAAI,OAAQ,EAAG,CAAC,EACxC,KAAK,IAAI,OAASC,CACnB,CACF,CACF,EAolBDjK,GAAA,YAAAkG,GAAc,SAACpkD,EAAM8/C,EAAkB5gC,EAAW,CAChD,MAAMgkC,EAAU,IAAI,OACpB,OAAAA,EAAQ,QAAQljD,EAAM,IAAI,UAAUkf,CAAS,EAAE,aAAa,aAAa4gC,CAAgB,CAAC,EACnFoD,CACR,EAxvBH,IAAMkF,GAAN3K,GAsmDA,UAAWxlD,KAAMqiB,GACX8tC,GAAe,UAAUnwD,CAAE,IAAM,SACnCmwD,GAAe,UAAU9tC,GAAIriB,CAAE,CAAC,EAAImwD,GAAe,UAAUnwD,CAAE,aAKnE,MAAMiiB,EAAoB,CAGxB,WAAW,YAAa,CACtB,OAAO2K,EAAA,KAAKwjC,GACb,CACD,WAAW,WAAWvhB,EAAK,CACzB,GAAI,EAAE,OAAO,OAAW,KAAeA,aAAe,SAAWA,IAAQ,KACvE,MAAM,IAAI,MAAM,4BAA4B,EAE9C/hB,EAAA,KAAKsjC,GAAQvhB,EACd,CACD,WAAW,WAAY,CACrB,OAAOjiB,EAAA,KAAKyjC,GACb,CACD,WAAW,UAAUxhB,EAAK,CACxB,GAAI,OAAOA,GAAQ,SACjB,MAAM,IAAI,MAAM,2BAA2B,EAE7C/hB,EAAA,KAAKujC,GAAOxhB,EACb,CACH,CApBSuhB,GAAA,YACAC,GAAA,YADP1mC,EADI1H,GACGmuC,GAAQ,MACfzmC,EAFI1H,GAEGouC,GAAO,cAuBhB,MAAMC,EAAS,CAGb,YAAY,CACV,WAAAC,EACA,QAAAt9B,CACJ,EAAK,CALHtJ,EAAA,KAAA6mC,GAAA,QACA7mC,EAAA,KAAA8mC,GAAA,QAKE3jC,EAAA,KAAK0jC,GAAeD,GACpBzjC,EAAA,KAAK2jC,GAAQx9B,EACd,CACD,QAAS,CACP,OAAOrG,EAAA,KAAK6jC,GACb,CACD,IAAI3xD,EAAM,CACR,OAAO8tB,EAAA,KAAK4jC,IAAa,IAAI1xD,CAAI,GAAK,IACvC,CACD,QAAS,CACP,OAAO0nB,GAAcoG,EAAA,KAAK4jC,GAAY,CACvC,CACD,IAAI1xD,EAAM,CACR,OAAO8tB,EAAA,KAAK4jC,IAAa,IAAI1xD,CAAI,CAClC,CACH,CArBE0xD,GAAA,YACAC,GAAA,YAyBF,MAAMC,GAAW,OAAO,UAAU,kBAClC,MAAMC,EAAqB,CAKzB,YAAYC,EAAiB,CAC3B,KAAA9xD,EACA,OAAA+pD,EACA,MAAAgI,EACA,SAAAC,CACJ,EAAK,CATHnnC,EAAA,KAAAonC,GAAa,IACbpnC,EAAA,KAAAqnC,GAAW,IACXrnC,EAAA,KAAAsnC,GAAW,IACXtnC,EAAA,KAAAunC,GAAW,IAOTpkC,EAAA,KAAKikC,GAAa,CAAC,EAAEH,EAAkBlsC,GAAoB,UAC3DoI,EAAA,KAAKkkC,GAAW,CAAC,EAAEJ,EAAkBlsC,GAAoB,QACzD,KAAK,KAAO5lB,EACZ,KAAK,OAAS+pD,EACd,KAAK,MAAQgI,EACb,KAAK,SAAWC,CACjB,CACD,IAAI,SAAU,CACZ,GAAIlkC,EAAA,KAAKqkC,IACP,OAAOrkC,EAAA,KAAKskC,IAEd,GAAI,CAACtkC,EAAA,KAAKskC,IACR,MAAO,GAET,KAAM,CACJ,MAAAC,EACA,KAAA94D,CACN,EAAQ,KAAK,MACT,OAAIu0B,EAAA,KAAKmkC,KACA14D,GAAA,YAAAA,EAAM,aAAc,MAClBu0B,EAAA,KAAKokC,KACPG,GAAA,YAAAA,EAAO,cAAe,MAExB,EACR,CACD,YAAY/2C,EAAUnmB,EAASm9D,EAAU,GAAO,CAC1Ch3C,IAAas2C,IACfxrC,GAAY,uCAAuC,EAErD4H,EAAA,KAAKmkC,GAAWG,GAChBtkC,EAAA,KAAKokC,GAAWj9D,EACjB,CACH,CA1CE88D,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,kCAwCF,MAAMG,EAAsB,CAK1B,YAAYzhE,EAAMghE,EAAkBlsC,GAAoB,QAAS,CA0BjEiF,EAAA,KAAA2nC,IA9BA3nC,EAAA,KAAA4nC,GAAiB,MACjB5nC,EAAA,KAAA6nC,GAAU,IAAI,KACd7nC,EAAA,KAAA8nC,GAAe,MACf9nC,EAAA,KAAA+nC,GAAS,MAKP,GAHA,KAAK,gBAAkBd,EACvB,KAAK,KAAO,KACZ,KAAK,QAAU,KACXhhE,IAAS,KAGb,MAAK,KAAOA,EAAK,KACjB,KAAK,QAAUA,EAAK,QACpBk9B,EAAA,KAAK4kC,GAAS9hE,EAAK,OACnB,UAAW6+D,KAAS7+D,EAAK,OACvBg9B,EAAA,KAAK4kC,IAAQ,IAAI/C,EAAM,GAAI,IAAIkC,GAAqBC,EAAiBnC,CAAK,CAAC,EAE7E,GAAI7+D,EAAK,YAAc,MACrB,UAAW6+D,KAAS7hC,EAAA,KAAK4kC,IAAQ,OAAM,EACrC/C,EAAM,YAAYiC,GAAU,EAAK,EAGrC,UAAWiB,KAAM/hE,EAAK,GACpBg9B,EAAA,KAAK4kC,IAAQ,IAAIG,CAAE,EAAE,YAAYjB,GAAU,EAAI,EAEjD,UAAWkB,KAAOhiE,EAAK,IACrBg9B,EAAA,KAAK4kC,IAAQ,IAAII,CAAG,EAAE,YAAYlB,GAAU,EAAK,EAEnD5jC,EAAA,KAAK2kC,GAAe,KAAK,WAC1B,CAqCD,UAAUhD,EAAO,CACf,GAAI7hC,EAAA,KAAK4kC,IAAQ,OAAS,EACxB,MAAO,GAET,GAAI,CAAC/C,EACH,OAAAr9C,GAAK,qCAAqC,EACnC,GAET,GAAIq9C,EAAM,OAAS,MACjB,OAAK7hC,EAAA,KAAK4kC,IAAQ,IAAI/C,EAAM,EAAE,EAIvB7hC,EAAA,KAAK4kC,IAAQ,IAAI/C,EAAM,EAAE,EAAE,SAHhCxpC,GAAK,qCAAqCwpC,EAAM,EAAE,EAAE,EAC7C,IAGJ,GAAIA,EAAM,OAAS,OAAQ,CAChC,GAAIA,EAAM,WACR,OAAOzlC,EAAA,KAAKsoC,GAAAO,IAAL,UAAmCpD,EAAM,YAElD,GAAI,CAACA,EAAM,QAAUA,EAAM,SAAW,QAAS,CAC7C,UAAW9sD,KAAM8sD,EAAM,IAAK,CAC1B,GAAI,CAAC7hC,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EACtB,OAAAsjB,GAAK,qCAAqCtjB,CAAE,EAAE,EACvC,GAET,GAAIirB,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EAAE,QACvB,MAAO,EAEV,CACD,MAAO,EACf,SAAiB8sD,EAAM,SAAW,QAAS,CACnC,UAAW9sD,KAAM8sD,EAAM,IAAK,CAC1B,GAAI,CAAC7hC,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EACtB,OAAAsjB,GAAK,qCAAqCtjB,CAAE,EAAE,EACvC,GAET,GAAI,CAACirB,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EAAE,QACxB,MAAO,EAEV,CACD,MAAO,EACf,SAAiB8sD,EAAM,SAAW,SAAU,CACpC,UAAW9sD,KAAM8sD,EAAM,IAAK,CAC1B,GAAI,CAAC7hC,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EACtB,OAAAsjB,GAAK,qCAAqCtjB,CAAE,EAAE,EACvC,GAET,GAAI,CAACirB,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EAAE,QACxB,MAAO,EAEV,CACD,MAAO,EACf,SAAiB8sD,EAAM,SAAW,SAAU,CACpC,UAAW9sD,KAAM8sD,EAAM,IAAK,CAC1B,GAAI,CAAC7hC,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EACtB,OAAAsjB,GAAK,qCAAqCtjB,CAAE,EAAE,EACvC,GAET,GAAIirB,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EAAE,QACvB,MAAO,EAEV,CACD,MAAO,EACR,CACD,OAAAsjB,GAAK,mCAAmCwpC,EAAM,MAAM,GAAG,EAChD,EACR,CACD,OAAAxpC,GAAK,sBAAsBwpC,EAAM,IAAI,GAAG,EACjC,EACR,CACD,cAAc9sD,EAAI1N,EAAU,GAAM69D,EAAa,GAAM,OACnD,MAAMrD,EAAQ7hC,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,EACjC,GAAI,CAAC8sD,EAAO,CACVxpC,GAAK,qCAAqCtjB,CAAE,EAAE,EAC9C,MACD,CACD,GAAImwD,GAAc79D,GAAWw6D,EAAM,SAAS,OAC1C,UAAWsD,KAAWtD,EAAM,SAC1B,UAAWuD,KAAWD,EAChBC,IAAYrwD,KACdolB,EAAA6F,EAAA,KAAK4kC,IAAQ,IAAIQ,CAAO,IAAxB,MAAAjrC,EAA2B,YAAY2pC,GAAU,GAAO,KAKhEjC,EAAM,YAAYiC,GAAU,CAAC,CAACz8D,EAAS,EAAI,EAC3C64B,EAAA,KAAKykC,GAAiB,KACvB,CACD,YAAY,CACV,MAAA7mD,EACA,WAAAonD,CACJ,EAAK,CACD,IAAIG,EACJ,UAAWvR,KAAQh2C,EAAO,CACxB,OAAQg2C,EAAI,CACV,IAAK,KACL,IAAK,MACL,IAAK,SACHuR,EAAWvR,EACX,QACH,CACD,MAAM+N,EAAQ7hC,EAAA,KAAK4kC,IAAQ,IAAI9Q,CAAI,EACnC,GAAK+N,EAGL,OAAQwD,EAAQ,CACd,IAAK,KACH,KAAK,cAAcvR,EAAM,GAAMoR,CAAU,EACzC,MACF,IAAK,MACH,KAAK,cAAcpR,EAAM,GAAOoR,CAAU,EAC1C,MACF,IAAK,SACH,KAAK,cAAcpR,EAAM,CAAC+N,EAAM,QAASqD,CAAU,EACnD,KACH,CACF,CACDhlC,EAAA,KAAKykC,GAAiB,KACvB,CACD,IAAI,sBAAuB,CACzB,OAAO3kC,EAAA,KAAK6kC,MAAiB,MAAQ,KAAK,QAAS,IAAK7kC,EAAA,KAAK6kC,GAC9D,CACD,UAAW,CACT,OAAK7kC,EAAA,KAAK4kC,IAAQ,KAGd5kC,EAAA,KAAK8kC,IACA9kC,EAAA,KAAK8kC,IAAO,QAEd,CAAC,GAAG9kC,EAAA,KAAK4kC,IAAQ,KAAM,GALrB,IAMV,CACD,WAAY,CACV,OAAO5kC,EAAA,KAAK4kC,IAAQ,KAAO,EAAIhrC,GAAcoG,EAAA,KAAK4kC,GAAO,EAAI,IAC9D,CACD,SAAS7vD,EAAI,CACX,OAAOirB,EAAA,KAAK4kC,IAAQ,IAAI7vD,CAAE,GAAK,IAChC,CACD,SAAU,CACR,GAAIirB,EAAA,KAAK2kC,MAAmB,KAC1B,OAAO3kC,EAAA,KAAK2kC,IAEd,MAAMviB,EAAO,IAAIzB,GACjB,SAAW,CAAC5rC,EAAI8sD,CAAK,IAAK7hC,EAAA,KAAK4kC,IAC7BxiB,EAAK,OAAO,GAAGrtC,CAAE,IAAI8sD,EAAM,OAAO,EAAE,EAEtC,OAAO3hC,EAAA,KAAKykC,GAAiBviB,EAAK,UAAS,EAC5C,CACH,CApNEuiB,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YA2BAJ,GAAA,YAAAO,GAA6B,SAACrrD,EAAO,CACnC,MAAMpU,EAASoU,EAAM,OACrB,GAAIpU,EAAS,EACX,MAAO,GAET,MAAM6/D,EAAWzrD,EAAM,CAAC,EACxB,QAASlU,EAAI,EAAGA,EAAIF,EAAQE,IAAK,CAC/B,MAAM6G,EAAUqN,EAAMlU,CAAC,EACvB,IAAIoY,EACJ,GAAI,MAAM,QAAQvR,CAAO,EACvBuR,EAAQse,EAAA,KAAKsoC,GAAAO,IAAL,UAAmC14D,WAClCyzB,EAAA,KAAK4kC,IAAQ,IAAIr4D,CAAO,EACjCuR,EAAQkiB,EAAA,KAAK4kC,IAAQ,IAAIr4D,CAAO,EAAE,YAElC,QAAA8rB,GAAK,qCAAqC9rB,CAAO,EAAE,EAC5C,GAET,OAAQ84D,EAAQ,CACd,IAAK,MACH,GAAI,CAACvnD,EACH,MAAO,GAET,MACF,IAAK,KACH,GAAIA,EACF,MAAO,GAET,MACF,IAAK,MACH,MAAO,CAACA,EACV,QACE,MAAO,EACV,CACF,CACD,OAAOunD,IAAa,KACrB,EAwJH,MAAMC,EAAuB,CAC3B,YAAYC,EAAuB,CACjC,aAAAC,EAAe,GACf,cAAAC,EAAgB,EACpB,EAAK,CACDltC,GAAOgtC,EAAuB,6EAA6E,EAC3G,KAAM,CACJ,OAAA//D,EACA,YAAAkgE,EACA,gBAAAC,EACA,2BAAAC,CACD,EAAGL,EAIJ,GAHA,KAAK,cAAgB,GACrB,KAAK,iBAAmBI,EACxB,KAAK,4BAA8BC,GAC/BF,GAAA,YAAAA,EAAa,QAAS,EAAG,CAC3B,MAAM//D,EAAS+/D,aAAuB,YAAcA,EAAY,aAAeA,EAAY,OAAO,WAAaA,EAAY,OAAS,IAAI,WAAWA,CAAW,EAAE,OAChK,KAAK,cAAc,KAAK//D,CAAM,CAC/B,CACD,KAAK,uBAAyB4/D,EAC9B,KAAK,sBAAwB,CAACE,EAC9B,KAAK,kBAAoB,CAACD,EAC1B,KAAK,eAAiBhgE,EACtB,KAAK,mBAAqB,KAC1B,KAAK,cAAgB,GACrB+/D,EAAsB,iBAAiB,CAACM,EAAOh+C,IAAU,CACvD,KAAK,eAAe,CAClB,MAAAg+C,EACA,MAAAh+C,CACR,CAAO,CACP,CAAK,EACD09C,EAAsB,oBAAoB,CAACO,EAAQ/7D,IAAU,CAC3D,KAAK,YAAY,CACf,OAAA+7D,EACA,MAAA/7D,CACR,CAAO,CACP,CAAK,EACDw7D,EAAsB,2BAA2B19C,GAAS,CACxD,KAAK,eAAe,CAClB,MAAAA,CACR,CAAO,CACP,CAAK,EACD09C,EAAsB,2BAA2B,IAAM,CACrD,KAAK,mBAAkB,CAC7B,CAAK,EACDA,EAAsB,eAAc,CACrC,CACD,eAAe,CACb,MAAAM,EACA,MAAAh+C,CACJ,EAAK,CACD,MAAMliB,EAASkiB,aAAiB,YAAcA,EAAM,aAAeA,EAAM,OAAO,WAAaA,EAAM,OAAS,IAAI,WAAWA,CAAK,EAAE,OAClI,GAAIg+C,IAAU,OACR,KAAK,mBACP,KAAK,mBAAmB,SAASlgE,CAAM,EAEvC,KAAK,cAAc,KAAKA,CAAM,MAE3B,CACL,MAAMogE,EAAQ,KAAK,cAAc,KAAK,SAAUC,EAAa,CAC3D,OAAIA,EAAY,SAAWH,EAClB,IAETG,EAAY,SAASrgE,CAAM,EACpB,GACf,CAAO,EACD4yB,GAAOwtC,EAAO,yEAAyE,CACxF,CACF,CACD,IAAI,wBAAyB,OAC3B,QAAO5rC,EAAA,KAAK,qBAAL,YAAAA,EAAyB,UAAW,CAC5C,CACD,YAAYgT,EAAK,aACXA,EAAI,QAAU,QAChBjT,GAAAC,EAAA,KAAK,cAAc,CAAC,IAApB,YAAAA,EAAuB,aAAvB,MAAAD,EAAA,KAAAC,EAAoC,CAClC,OAAQgT,EAAI,MACpB,IAEMa,GAAAD,EAAA,KAAK,qBAAL,YAAAA,EAAyB,aAAzB,MAAAC,EAAA,KAAAD,EAAsC,CACpC,OAAQZ,EAAI,OACZ,MAAOA,EAAI,KACnB,EAEG,CACD,oBAAqB,QACnBhT,EAAA,KAAK,qBAAL,MAAAA,EAAyB,kBACzB,KAAK,iBAAmB,EACzB,CACD,mBAAmBp1B,EAAQ,CACzB,MAAMW,EAAI,KAAK,cAAc,QAAQX,CAAM,EACvCW,GAAK,GACP,KAAK,cAAc,OAAOA,EAAG,CAAC,CAEjC,CACD,eAAgB,CACd6yB,GAAO,CAAC,KAAK,mBAAoB,+DAA+D,EAChG,MAAM0tC,EAAe,KAAK,cAC1B,YAAK,cAAgB,KACd,IAAIC,GAA6B,KAAMD,EAAc,KAAK,iBAAkB,KAAK,2BAA2B,CACpH,CACD,eAAeJ,EAAO/lC,EAAK,CACzB,GAAIA,GAAO,KAAK,uBACd,OAAO,KAET,MAAM/6B,EAAS,IAAIohE,GAAkC,KAAMN,EAAO/lC,CAAG,EACrE,YAAK,uBAAuB,iBAAiB+lC,EAAO/lC,CAAG,EACvD,KAAK,cAAc,KAAK/6B,CAAM,EACvBA,CACR,CACD,kBAAkBwjB,EAAQ,QACxB4R,EAAA,KAAK,qBAAL,MAAAA,EAAyB,OAAO5R,GAChC,UAAWxjB,KAAU,KAAK,cAAc,MAAM,CAAC,EAC7CA,EAAO,OAAOwjB,CAAM,EAEtB,KAAK,uBAAuB,OAC7B,CACH,CACA,MAAM29C,EAA6B,CACjC,YAAYl8D,EAAQi8D,EAAcN,EAAkB,GAAOC,EAA6B,KAAM,CAC5F,KAAK,QAAU57D,EACf,KAAK,MAAQ27D,GAAmB,GAChC,KAAK,UAAYzuC,GAAU0uC,CAA0B,EAAIA,EAA6B,KACtF,KAAK,cAAgBK,GAAgB,GACrC,KAAK,QAAU,EACf,UAAWp+C,KAAS,KAAK,cACvB,KAAK,SAAWA,EAAM,WAExB,KAAK,UAAY,GACjB,KAAK,cAAgB,QAAQ,UAC7B7d,EAAO,mBAAqB,KAC5B,KAAK,WAAa,IACnB,CACD,SAAS6d,EAAO,CACV,KAAK,QAGL,KAAK,UAAU,OAAS,EACA,KAAK,UAAU,MAAK,EAC5B,QAAQ,CACxB,MAAOA,EACP,KAAM,EACd,CAAO,EAED,KAAK,cAAc,KAAKA,CAAK,EAE/B,KAAK,SAAWA,EAAM,WACvB,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,aACb,CACD,IAAI,UAAW,CACb,OAAO,KAAK,SACb,CACD,IAAI,kBAAmB,CACrB,OAAO,KAAK,QAAQ,iBACrB,CACD,IAAI,sBAAuB,CACzB,OAAO,KAAK,QAAQ,qBACrB,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAQ,cACrB,CACD,MAAM,MAAO,CACX,GAAI,KAAK,cAAc,OAAS,EAE9B,MAAO,CACL,MAFY,KAAK,cAAc,MAAK,EAGpC,KAAM,EACd,EAEI,GAAI,KAAK,MACP,MAAO,CACL,MAAO,OACP,KAAM,EACd,EAEI,MAAMu+C,EAAoB,QAAQ,gBAClC,YAAK,UAAU,KAAKA,CAAiB,EAC9BA,EAAkB,OAC1B,CACD,OAAO79C,EAAQ,CACb,KAAK,MAAQ,GACb,UAAW69C,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EACd,CAAO,EAEH,KAAK,UAAU,OAAS,CACzB,CACD,iBAAkB,CACZ,KAAK,QAGT,KAAK,MAAQ,GACd,CACH,CACA,MAAMD,EAAkC,CACtC,YAAYn8D,EAAQ67D,EAAO/lC,EAAK,CAC9B,KAAK,QAAU91B,EACf,KAAK,OAAS67D,EACd,KAAK,KAAO/lC,EACZ,KAAK,aAAe,KACpB,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,WAAa,IACnB,CACD,SAASjY,EAAO,CACd,GAAI,MAAK,MAGT,IAAI,KAAK,UAAU,SAAW,EAC5B,KAAK,aAAeA,MACf,CACsB,KAAK,UAAU,MAAK,EAC5B,QAAQ,CACzB,MAAOA,EACP,KAAM,EACd,CAAO,EACD,UAAWu+C,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EAChB,CAAS,EAEH,KAAK,UAAU,OAAS,CACzB,CACD,KAAK,MAAQ,GACb,KAAK,QAAQ,mBAAmB,IAAI,EACrC,CACD,IAAI,sBAAuB,CACzB,MAAO,EACR,CACD,MAAM,MAAO,CACX,GAAI,KAAK,aAAc,CACrB,MAAMv+C,EAAQ,KAAK,aACnB,YAAK,aAAe,KACb,CACL,MAAOA,EACP,KAAM,EACd,CACK,CACD,GAAI,KAAK,MACP,MAAO,CACL,MAAO,OACP,KAAM,EACd,EAEI,MAAMu+C,EAAoB,QAAQ,gBAClC,YAAK,UAAU,KAAKA,CAAiB,EAC9BA,EAAkB,OAC1B,CACD,OAAO79C,EAAQ,CACb,KAAK,MAAQ,GACb,UAAW69C,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EACd,CAAO,EAEH,KAAK,UAAU,OAAS,EACxB,KAAK,QAAQ,mBAAmB,IAAI,CACrC,CACH,CAIA,SAASC,GAAwCC,EAAoB,CACnE,IAAIC,EAAqB,GACrBnY,EAAMoY,EAAc,cAAe,GAAG,EAAE,KAAKF,CAAkB,EACnE,GAAIlY,EAAK,CACPA,EAAMA,EAAI,CAAC,EACX,IAAIh/C,EAAWq3D,EAAerY,CAAG,EACjC,OAAAh/C,EAAW,SAASA,CAAQ,EAC5BA,EAAWs3D,EAAct3D,CAAQ,EACjCA,EAAWu3D,EAAcv3D,CAAQ,EAC1Bw3D,EAAcx3D,CAAQ,CAC9B,CAED,GADAg/C,EAAMyY,EAAgBP,CAAkB,EACpClY,EAAK,CACP,MAAMh/C,EAAWu3D,EAAcvY,CAAG,EAClC,OAAOwY,EAAcx3D,CAAQ,CAC9B,CAED,GADAg/C,EAAMoY,EAAc,WAAY,GAAG,EAAE,KAAKF,CAAkB,EACxDlY,EAAK,CACPA,EAAMA,EAAI,CAAC,EACX,IAAIh/C,EAAWq3D,EAAerY,CAAG,EACjC,OAAAh/C,EAAWu3D,EAAcv3D,CAAQ,EAC1Bw3D,EAAcx3D,CAAQ,CAC9B,CACD,SAASo3D,EAAcM,EAAkBC,EAAO,CAC9C,OAAO,IAAI,OAAO,cAAgBD,EAAmB,sDAAgFC,CAAK,CAC3I,CACD,SAASC,EAAWC,EAAU94D,EAAO,CACnC,GAAI84D,EAAU,CACZ,GAAI,CAAC,iBAAiB,KAAK94D,CAAK,EAC9B,OAAOA,EAET,GAAI,CACF,MAAM+4D,EAAU,IAAI,YAAYD,EAAU,CACxC,MAAO,EACjB,CAAS,EACKthE,EAAS8zB,GAActrB,CAAK,EAClCA,EAAQ+4D,EAAQ,OAAOvhE,CAAM,EAC7B4gE,EAAqB,EACtB,MAAO,CAAE,CACX,CACD,OAAOp4D,CACR,CACD,SAASy4D,EAAcz4D,EAAO,CAC5B,OAAIo4D,GAAsB,cAAc,KAAKp4D,CAAK,IAChDA,EAAQ64D,EAAW,QAAS74D,CAAK,EAC7Bo4D,IACFp4D,EAAQ64D,EAAW,aAAc74D,CAAK,IAGnCA,CACR,CACD,SAAS04D,EAAgBM,EAAuB,CAC9C,MAAMhnC,EAAU,GAChB,IAAIinC,EACJ,MAAMC,EAAOb,EAAc,kCAAmC,IAAI,EAClE,MAAQY,EAAQC,EAAK,KAAKF,CAAqB,KAAO,MAAM,CAC1D,GAAI,CAAG,CAAAt2C,EAAGy2C,EAAMC,CAAI,EAAIH,EAExB,GADAv2C,EAAI,SAASA,EAAG,EAAE,EACdA,KAAKsP,EAAS,CAChB,GAAItP,IAAM,EACR,MAEF,QACD,CACDsP,EAAQtP,CAAC,EAAI,CAACy2C,EAAMC,CAAI,CACzB,CACD,MAAM3+C,EAAQ,GACd,QAASiI,EAAI,EAAGA,EAAIsP,EAAQ,QACpBtP,KAAKsP,EADuB,EAAEtP,EAAG,CAIvC,GAAI,CAACy2C,EAAMC,CAAI,EAAIpnC,EAAQtP,CAAC,EAC5B02C,EAAOd,EAAec,CAAI,EACtBD,IACFC,EAAO,SAASA,CAAI,EAChB12C,IAAM,IACR02C,EAAOb,EAAca,CAAI,IAG7B3+C,EAAM,KAAK2+C,CAAI,CAChB,CACD,OAAO3+C,EAAM,KAAK,EAAE,CACrB,CACD,SAAS69C,EAAet4D,EAAO,CAC7B,GAAIA,EAAM,WAAW,GAAG,EAAG,CACzB,MAAMya,EAAQza,EAAM,MAAM,CAAC,EAAE,MAAM,KAAK,EACxC,QAASzI,EAAI,EAAGA,EAAIkjB,EAAM,OAAQ,EAAEljB,EAAG,CACrC,MAAM8hE,EAAY5+C,EAAMljB,CAAC,EAAE,QAAQ,GAAG,EAClC8hE,IAAc,KAChB5+C,EAAMljB,CAAC,EAAIkjB,EAAMljB,CAAC,EAAE,MAAM,EAAG8hE,CAAS,EACtC5+C,EAAM,OAASljB,EAAI,GAErBkjB,EAAMljB,CAAC,EAAIkjB,EAAMljB,CAAC,EAAE,WAAW,SAAU,IAAI,CAC9C,CACDyI,EAAQya,EAAM,KAAK,GAAG,CACvB,CACD,OAAOza,CACR,CACD,SAASu4D,EAAce,EAAU,CAC/B,MAAMC,EAAcD,EAAS,QAAQ,GAAG,EACxC,GAAIC,IAAgB,GAClB,OAAOD,EAET,MAAMR,EAAWQ,EAAS,MAAM,EAAGC,CAAW,EAExCv5D,EADYs5D,EAAS,MAAMC,EAAc,CAAC,EACxB,QAAQ,UAAW,EAAE,EAC7C,OAAOV,EAAWC,EAAU94D,CAAK,CAClC,CACD,SAASw4D,EAAcx4D,EAAO,CAC5B,MAAI,CAACA,EAAM,WAAW,IAAI,GAAK,uBAAuB,KAAKA,CAAK,EACvDA,EAEFA,EAAM,WAAW,iDAAkD,SAAUgyB,EAASwnC,EAASV,EAAUl2D,EAAM,CACpH,GAAIk2D,IAAa,KAAOA,IAAa,IACnC,OAAAl2D,EAAOA,EAAK,WAAW,IAAK,GAAG,EAC/BA,EAAOA,EAAK,WAAW,qBAAsB,SAAUq2D,EAAOQ,EAAK,CACjE,OAAO,OAAO,aAAa,SAASA,EAAK,EAAE,CAAC,CACtD,CAAS,EACMZ,EAAWW,EAAS52D,CAAI,EAEjC,GAAI,CACFA,EAAO,KAAKA,CAAI,CACjB,MAAO,CAAE,CACV,OAAOi2D,EAAWW,EAAS52D,CAAI,CACrC,CAAK,CACF,CACD,MAAO,EACT,CAMA,SAAS82D,GAAcC,EAAQC,EAAa,CAC1C,MAAMC,EAAU,IAAI,QACpB,GAAI,CAACF,GAAU,CAACC,GAAe,OAAOA,GAAgB,SACpD,OAAOC,EAET,UAAWtgE,KAAOqgE,EAAa,CAC7B,MAAM9lB,EAAM8lB,EAAYrgE,CAAG,EACvBu6C,IAAQ,QACV+lB,EAAQ,OAAOtgE,EAAKu6C,CAAG,CAE1B,CACD,OAAO+lB,CACT,CACA,SAASC,GAAkBplE,EAAK,OAC9B,QAAOs3B,EAAA,IAAI,MAAMt3B,CAAG,IAAb,YAAAs3B,EAAgB,SAAU,IACnC,CACA,SAAS+tC,GAAiC,CACxC,gBAAAC,EACA,OAAAL,EACA,eAAAM,EACA,aAAA5C,CACF,EAAG,CACD,MAAM6C,EAAe,CACnB,mBAAoB,GACpB,gBAAiB,MACrB,EACQ7iE,EAAS,SAAS2iE,EAAgB,IAAI,gBAAgB,EAAG,EAAE,EAejE,MAdI,CAAC,OAAO,UAAU3iE,CAAM,IAG5B6iE,EAAa,gBAAkB7iE,EAC3BA,GAAU,EAAI4iE,IAGd5C,GAAgB,CAACsC,GAGjBK,EAAgB,IAAI,eAAe,IAAM,UAGrBA,EAAgB,IAAI,kBAAkB,GAAK,cAC3C,aAGxBE,EAAa,mBAAqB,IAC3BA,CACT,CACA,SAASC,GAA0BH,EAAiB,CAClD,MAAM7B,EAAqB6B,EAAgB,IAAI,qBAAqB,EACpE,GAAI7B,EAAoB,CACtB,IAAIl3D,EAAWi3D,GAAwCC,CAAkB,EACzE,GAAIl3D,EAAS,SAAS,GAAG,EACvB,GAAI,CACFA,EAAW,mBAAmBA,CAAQ,CACvC,MAAO,CAAE,CAEZ,GAAI8nB,GAAU9nB,CAAQ,EACpB,OAAOA,CAEV,CACD,OAAO,IACT,CACA,SAASm5D,GAAoBtxD,EAAQpU,EAAK,CACxC,OAAO,IAAIqzB,GAAkB,+BAA+Bjf,CAAM,2BAA2BpU,CAAG,KAAMoU,EAAQA,IAAW,KAAOA,IAAW,GAAKpU,EAAI,WAAW,OAAO,CAAC,CACzK,CACA,SAAS2lE,GAAuBvxD,EAAQ,CACtC,OAAOA,IAAW,KAAOA,IAAW,GACtC,CAKA,SAASwxD,GAAmBT,EAASU,EAAiBC,EAAiB,CACrE,MAAO,CACL,OAAQ,MACR,QAAAX,EACA,OAAQW,EAAgB,OACxB,KAAM,OACN,YAAaD,EAAkB,UAAY,cAC3C,SAAU,QACd,CACA,CACA,SAASE,GAAe3mB,EAAK,CAC3B,OAAIA,aAAe,WACVA,EAAI,OAETA,aAAe,YACVA,GAET5pB,GAAK,4CAA4C4pB,CAAG,EAAE,EAC/C,IAAI,WAAWA,CAAG,EAAE,OAC7B,CACA,MAAM4mB,EAAe,CAEnB,YAAYv8D,EAAQ,CADpB/E,GAAA,uBAAkB,MAEhB,KAAK,OAAS+E,EACd,KAAK,OAAS,YAAY,KAAKA,EAAO,GAAG,EACzC,KAAK,QAAUu7D,GAAc,KAAK,OAAQv7D,EAAO,WAAW,EAC5D,KAAK,mBAAqB,KAC1B,KAAK,qBAAuB,EAC7B,CACD,IAAI,wBAAyB,OAC3B,QAAO6tB,EAAA,KAAK,qBAAL,YAAAA,EAAyB,UAAW,CAC5C,CACD,eAAgB,CACd,OAAA5B,GAAO,CAAC,KAAK,mBAAoB,uDAAuD,EACxF,KAAK,mBAAqB,IAAIuwC,GAAqB,IAAI,EAChD,KAAK,kBACb,CACD,eAAejD,EAAO/lC,EAAK,CACzB,GAAIA,GAAO,KAAK,uBACd,OAAO,KAET,MAAM/6B,EAAS,IAAIgkE,GAA0B,KAAMlD,EAAO/lC,CAAG,EAC7D,YAAK,qBAAqB,KAAK/6B,CAAM,EAC9BA,CACR,CACD,kBAAkBwjB,EAAQ,QACxB4R,EAAA,KAAK,qBAAL,MAAAA,EAAyB,OAAO5R,GAChC,UAAWxjB,KAAU,KAAK,qBAAqB,MAAM,CAAC,EACpDA,EAAO,OAAOwjB,CAAM,CAEvB,CACH,CACA,MAAMugD,EAAqB,CACzB,YAAY9+D,EAAQ,CAClB,KAAK,QAAUA,EACf,KAAK,QAAU,KACf,KAAK,QAAU,EACf,KAAK,UAAY,KACjB,MAAMsC,EAAStC,EAAO,OACtB,KAAK,iBAAmBsC,EAAO,iBAAmB,GAClD,KAAK,eAAiBA,EAAO,OAC7B,KAAK,mBAAqB,QAAQ,gBAClC,KAAK,cAAgBA,EAAO,cAAgB,GAC5C,KAAK,gBAAkBA,EAAO,eAC1B,CAAC,KAAK,iBAAmB,CAAC,KAAK,gBACjC,KAAK,cAAgB,IAEvB,KAAK,iBAAmB,IAAI,gBAC5B,KAAK,sBAAwB,CAACA,EAAO,cACrC,KAAK,kBAAoB,CAACA,EAAO,aACjC,MAAM07D,EAAU,IAAI,QAAQh+D,EAAO,OAAO,EACpCnH,EAAMyJ,EAAO,IACnB,MAAMzJ,EAAK4lE,GAAmBT,EAAS,KAAK,iBAAkB,KAAK,gBAAgB,CAAC,EAAE,KAAKjlE,GAAY,CAErG,GADAiH,EAAO,gBAAkBi+D,GAAkBllE,EAAS,GAAG,EACnD,CAACylE,GAAuBzlE,EAAS,MAAM,EACzC,MAAMwlE,GAAoBxlE,EAAS,OAAQF,CAAG,EAEhD,KAAK,QAAUE,EAAS,KAAK,UAAS,EACtC,KAAK,mBAAmB,UACxB,MAAMolE,EAAkBplE,EAAS,QAC3B,CACJ,mBAAAimE,EACA,gBAAAC,CACD,EAAGf,GAAiC,CACnC,gBAAAC,EACA,OAAQn+D,EAAO,OACf,eAAgB,KAAK,gBACrB,aAAc,KAAK,aAC3B,CAAO,EACD,KAAK,kBAAoBg/D,EACzB,KAAK,eAAiBC,GAAmB,KAAK,eAC9C,KAAK,UAAYX,GAA0BH,CAAe,EACtD,CAAC,KAAK,uBAAyB,KAAK,mBACtC,KAAK,OAAO,IAAI1zC,GAAe,wBAAwB,CAAC,CAE3D,GAAE,MAAM,KAAK,mBAAmB,MAAM,EACvC,KAAK,WAAa,IACnB,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,mBAAmB,OAChC,CACD,IAAI,UAAW,CACb,OAAO,KAAK,SACb,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,cACb,CACD,IAAI,kBAAmB,CACrB,OAAO,KAAK,iBACb,CACD,IAAI,sBAAuB,CACzB,OAAO,KAAK,qBACb,CACD,MAAM,MAAO,OACX,MAAM,KAAK,mBAAmB,QAC9B,KAAM,CACJ,MAAAtmB,EACA,KAAA+6D,CACD,EAAG,MAAM,KAAK,QAAQ,OACvB,OAAIA,EACK,CACL,MAAA/6D,EACA,KAAA+6D,CACR,GAEI,KAAK,SAAW/6D,EAAM,YACtBgsB,EAAA,KAAK,aAAL,MAAAA,EAAA,UAAkB,CAChB,OAAQ,KAAK,QACb,MAAO,KAAK,cAClB,GACW,CACL,MAAOyuC,GAAez6D,CAAK,EAC3B,KAAM,EACZ,EACG,CACD,OAAOoa,EAAQ,QACb4R,EAAA,KAAK,UAAL,MAAAA,EAAc,OAAO5R,GACrB,KAAK,iBAAiB,OACvB,CACH,CACA,MAAMwgD,EAA0B,CAC9B,YAAY/+D,EAAQ67D,EAAO/lC,EAAK,CAC9B,KAAK,QAAU91B,EACf,KAAK,QAAU,KACf,KAAK,QAAU,EACf,MAAMsC,EAAStC,EAAO,OACtB,KAAK,iBAAmBsC,EAAO,iBAAmB,GAClD,KAAK,gBAAkB,QAAQ,gBAC/B,KAAK,sBAAwB,CAACA,EAAO,cACrC,KAAK,iBAAmB,IAAI,gBAC5B,MAAM07D,EAAU,IAAI,QAAQh+D,EAAO,OAAO,EAC1Cg+D,EAAQ,OAAO,QAAS,SAASnC,CAAK,IAAI/lC,EAAM,CAAC,EAAE,EACnD,MAAMj9B,EAAMyJ,EAAO,IACnB,MAAMzJ,EAAK4lE,GAAmBT,EAAS,KAAK,iBAAkB,KAAK,gBAAgB,CAAC,EAAE,KAAKjlE,GAAY,CACrG,MAAMomE,EAAiBlB,GAAkBllE,EAAS,GAAG,EACrD,GAAIomE,IAAmBn/D,EAAO,gBAC5B,MAAM,IAAI,MAAM,mCAAmCm/D,CAAc,eAAen/D,EAAO,eAAe,IAAI,EAE5G,GAAI,CAACw+D,GAAuBzlE,EAAS,MAAM,EACzC,MAAMwlE,GAAoBxlE,EAAS,OAAQF,CAAG,EAEhD,KAAK,gBAAgB,UACrB,KAAK,QAAUE,EAAS,KAAK,UAAS,CACvC,GAAE,MAAM,KAAK,gBAAgB,MAAM,EACpC,KAAK,WAAa,IACnB,CACD,IAAI,sBAAuB,CACzB,OAAO,KAAK,qBACb,CACD,MAAM,MAAO,OACX,MAAM,KAAK,gBAAgB,QAC3B,KAAM,CACJ,MAAAoL,EACA,KAAA+6D,CACD,EAAG,MAAM,KAAK,QAAQ,OACvB,OAAIA,EACK,CACL,MAAA/6D,EACA,KAAA+6D,CACR,GAEI,KAAK,SAAW/6D,EAAM,YACtBgsB,EAAA,KAAK,aAAL,MAAAA,EAAA,UAAkB,CAChB,OAAQ,KAAK,OACnB,GACW,CACL,MAAOyuC,GAAez6D,CAAK,EAC3B,KAAM,EACZ,EACG,CACD,OAAOoa,EAAQ,QACb4R,EAAA,KAAK,UAAL,MAAAA,EAAc,OAAO5R,GACrB,KAAK,iBAAiB,OACvB,CACH,CAKA,MAAM6gD,GAAc,IACdC,GAA2B,IACjC,SAASC,GAAuBhyD,EAAK,CACnC,MAAMtU,EAAOsU,EAAI,SACjB,OAAI,OAAOtU,GAAS,SACXA,EAEFy2B,GAAcz2B,CAAI,EAAE,MAC7B,CACA,MAAMumE,EAAe,CAEnB,YAAY,CACV,IAAA1mE,EACA,YAAAklE,EACA,gBAAAW,CACJ,EAAK,CALHnhE,GAAA,uBAAkB,MAMhB,KAAK,IAAM1E,EACX,KAAK,OAAS,YAAY,KAAKA,CAAG,EAClC,KAAK,QAAUglE,GAAc,KAAK,OAAQE,CAAW,EACrD,KAAK,gBAAkBW,GAAmB,GAC1C,KAAK,UAAY,EACjB,KAAK,gBAAkB,OAAO,OAAO,IAAI,CAC1C,CACD,QAAQzvD,EAAM,CACZ,MAAM3B,EAAM,IAAI,eACVkyD,EAAQ,KAAK,YACbC,EAAiB,KAAK,gBAAgBD,CAAK,EAAI,CACnD,IAAAlyD,CACN,EACIA,EAAI,KAAK,MAAO,KAAK,GAAG,EACxBA,EAAI,gBAAkB,KAAK,gBAC3B,SAAW,CAAC5P,EAAKu6C,CAAG,IAAK,KAAK,QAC5B3qC,EAAI,iBAAiB5P,EAAKu6C,CAAG,EAE/B,OAAI,KAAK,QAAU,UAAWhpC,GAAQ,QAASA,GAC7C3B,EAAI,iBAAiB,QAAS,SAAS2B,EAAK,KAAK,IAAIA,EAAK,IAAM,CAAC,EAAE,EACnEwwD,EAAe,eAAiBJ,IAEhCI,EAAe,eAAiBL,GAElC9xD,EAAI,aAAe,cACnBihB,GAAOtf,EAAK,QAAS,6CAA6C,EAClE3B,EAAI,QAAU,IAAM,CAClB2B,EAAK,QAAQ3B,EAAI,MAAM,CAC7B,EACIA,EAAI,mBAAqB,KAAK,cAAc,KAAK,KAAMkyD,CAAK,EAC5DlyD,EAAI,WAAa,KAAK,WAAW,KAAK,KAAMkyD,CAAK,EACjDC,EAAe,kBAAoBxwD,EAAK,kBACxCwwD,EAAe,OAASxwD,EAAK,OAC7BwwD,EAAe,QAAUxwD,EAAK,QAC9BwwD,EAAe,WAAaxwD,EAAK,WACjC3B,EAAI,KAAK,IAAI,EACNkyD,CACR,CACD,WAAWA,EAAOr8B,EAAK,OACrB,MAAMs8B,EAAiB,KAAK,gBAAgBD,CAAK,EAC5CC,KAGLtvC,EAAAsvC,EAAe,aAAf,MAAAtvC,EAAA,KAAAsvC,EAA4Bt8B,GAC7B,CACD,cAAcq8B,EAAOr8B,EAAK,CACxB,MAAMs8B,EAAiB,KAAK,gBAAgBD,CAAK,EACjD,GAAI,CAACC,EACH,OAEF,MAAMnyD,EAAMmyD,EAAe,IAQ3B,GAPInyD,EAAI,YAAc,GAAKmyD,EAAe,oBACxCA,EAAe,kBAAiB,EAChC,OAAOA,EAAe,mBAEpBnyD,EAAI,aAAe,GAGnB,EAAEkyD,KAAS,KAAK,iBAClB,OAGF,GADA,OAAO,KAAK,gBAAgBA,CAAK,EAC7BlyD,EAAI,SAAW,GAAK,KAAK,OAAQ,CACnCmyD,EAAe,QAAQnyD,EAAI,MAAM,EACjC,MACD,CACD,MAAMoyD,EAAYpyD,EAAI,QAAU8xD,GAEhC,GAAI,EADiCM,IAAcN,IAAeK,EAAe,iBAAmBJ,KAC/DK,IAAcD,EAAe,eAAgB,CAChFA,EAAe,QAAQnyD,EAAI,MAAM,EACjC,MACD,CACD,MAAMuQ,EAAQyhD,GAAuBhyD,CAAG,EACxC,GAAIoyD,IAAcL,GAA0B,CAC1C,MAAMM,EAAcryD,EAAI,kBAAkB,eAAe,EACnD6oB,EAAU,2BAA2B,KAAKwpC,CAAW,EACvDxpC,EACFspC,EAAe,OAAO,CACpB,MAAO,SAAStpC,EAAQ,CAAC,EAAG,EAAE,EAC9B,MAAAtY,CACV,CAAS,GAEDwQ,GAAK,4CAA4C,EACjDoxC,EAAe,QAAQ,CAAC,EAE3B,MAAU5hD,EACT4hD,EAAe,OAAO,CACpB,MAAO,EACP,MAAA5hD,CACR,CAAO,EAED4hD,EAAe,QAAQnyD,EAAI,MAAM,CAEpC,CACD,cAAckyD,EAAO,CACnB,OAAO,KAAK,gBAAgBA,CAAK,EAAE,GACpC,CACD,iBAAiBA,EAAO,CACtB,OAAOA,KAAS,KAAK,eACtB,CACD,aAAaA,EAAO,CAClB,MAAMlyD,EAAM,KAAK,gBAAgBkyD,CAAK,EAAE,IACxC,OAAO,KAAK,gBAAgBA,CAAK,EACjClyD,EAAI,MAAK,CACV,CACH,CACA,MAAMsyD,EAAiB,CACrB,YAAYt9D,EAAQ,CAClB,KAAK,QAAUA,EACf,KAAK,SAAW,IAAIi9D,GAAej9D,CAAM,EACzC,KAAK,gBAAkBA,EAAO,eAC9B,KAAK,mBAAqB,KAC1B,KAAK,qBAAuB,EAC7B,CACD,4BAA4BvH,EAAQ,CAClC,MAAMW,EAAI,KAAK,qBAAqB,QAAQX,CAAM,EAC9CW,GAAK,GACP,KAAK,qBAAqB,OAAOA,EAAG,CAAC,CAExC,CACD,eAAgB,CACd,OAAA6yB,GAAO,CAAC,KAAK,mBAAoB,yDAAyD,EAC1F,KAAK,mBAAqB,IAAIsxC,GAAkC,KAAK,SAAU,KAAK,OAAO,EACpF,KAAK,kBACb,CACD,eAAehE,EAAO/lC,EAAK,CACzB,MAAM/6B,EAAS,IAAI+kE,GAAmC,KAAK,SAAUjE,EAAO/lC,CAAG,EAC/E,OAAA/6B,EAAO,SAAW,KAAK,4BAA4B,KAAK,IAAI,EAC5D,KAAK,qBAAqB,KAAKA,CAAM,EAC9BA,CACR,CACD,kBAAkBwjB,EAAQ,QACxB4R,EAAA,KAAK,qBAAL,MAAAA,EAAyB,OAAO5R,GAChC,UAAWxjB,KAAU,KAAK,qBAAqB,MAAM,CAAC,EACpDA,EAAO,OAAOwjB,CAAM,CAEvB,CACH,CACA,MAAMshD,EAAkC,CACtC,YAAYzqD,EAAS9S,EAAQ,CAC3B,KAAK,SAAW8S,EAChB,KAAK,KAAO9S,EAAO,IACnB,KAAK,eAAiB8S,EAAQ,QAAQ,CACpC,kBAAmB,KAAK,mBAAmB,KAAK,IAAI,EACpD,OAAQ,KAAK,QAAQ,KAAK,IAAI,EAC9B,QAAS,KAAK,SAAS,KAAK,IAAI,EAChC,WAAY,KAAK,YAAY,KAAK,IAAI,CAC5C,CAAK,EACD,KAAK,mBAAqB,QAAQ,gBAClC,KAAK,cAAgB9S,EAAO,cAAgB,GAC5C,KAAK,eAAiBA,EAAO,OAC7B,KAAK,gBAAkBA,EAAO,eAC1B,CAAC,KAAK,iBAAmB,CAAC,KAAK,gBACjC,KAAK,cAAgB,IAEvB,KAAK,sBAAwB,GAC7B,KAAK,kBAAoB,GACzB,KAAK,cAAgB,GACrB,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,aAAe,OACpB,KAAK,UAAY,KACjB,KAAK,WAAa,IACnB,CACD,oBAAqB,CACnB,MAAMy9D,EAAmB,KAAK,eACxBC,EAAiB,KAAK,SAAS,cAAcD,CAAgB,EACnE,KAAK,SAAS,gBAAkB9B,GAAkB+B,EAAe,WAAW,EAC5E,MAAMC,EAAqBD,EAAe,wBACpC7B,EAAkB,IAAI,QAAQ8B,EAAqBA,EAAmB,UAAS,EAAG,QAAQ,WAAY,EAAE,EAAE,MAAM,SAAS,EAAE,IAAIh5C,GAAK,CACxI,KAAM,CAACvpB,EAAK,GAAGu6C,CAAG,EAAIhxB,EAAE,MAAM,IAAI,EAClC,MAAO,CAACvpB,EAAKu6C,EAAI,KAAK,IAAI,CAAC,CACjC,CAAK,EAAI,CAAE,GACD,CACJ,mBAAA+mB,EACA,gBAAAC,CACD,EAAGf,GAAiC,CACnC,gBAAAC,EACA,OAAQ,KAAK,SAAS,OACtB,eAAgB,KAAK,gBACrB,aAAc,KAAK,aACzB,CAAK,EACGa,IACF,KAAK,kBAAoB,IAE3B,KAAK,eAAiBC,GAAmB,KAAK,eAC9C,KAAK,UAAYX,GAA0BH,CAAe,EACtD,KAAK,mBACP,KAAK,SAAS,aAAa4B,CAAgB,EAE7C,KAAK,mBAAmB,SACzB,CACD,QAAQ/mE,EAAM,CAaZ,GAZIA,IACE,KAAK,UAAU,OAAS,EACA,KAAK,UAAU,MAAK,EAC5B,QAAQ,CACxB,MAAOA,EAAK,MACZ,KAAM,EAChB,CAAS,EAED,KAAK,cAAc,KAAKA,EAAK,KAAK,GAGtC,KAAK,MAAQ,GACT,OAAK,cAAc,OAAS,GAGhC,WAAWojE,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EACd,CAAO,EAEH,KAAK,UAAU,OAAS,EACzB,CACD,SAASnvD,EAAQ,CACf,KAAK,aAAesxD,GAAoBtxD,EAAQ,KAAK,IAAI,EACzD,KAAK,mBAAmB,OAAO,KAAK,YAAY,EAChD,UAAWmvD,KAAqB,KAAK,UACnCA,EAAkB,OAAO,KAAK,YAAY,EAE5C,KAAK,UAAU,OAAS,EACxB,KAAK,cAAc,OAAS,CAC7B,CACD,YAAYj5B,EAAK,QACfhT,EAAA,KAAK,aAAL,MAAAA,EAAA,UAAkB,CAChB,OAAQgT,EAAI,OACZ,MAAOA,EAAI,iBAAmBA,EAAI,MAAQ,KAAK,cACrD,EACG,CACD,IAAI,UAAW,CACb,OAAO,KAAK,SACb,CACD,IAAI,kBAAmB,CACrB,OAAO,KAAK,iBACb,CACD,IAAI,sBAAuB,CACzB,OAAO,KAAK,qBACb,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,cACb,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,mBAAmB,OAChC,CACD,MAAM,MAAO,CAEX,GADA,MAAM,KAAK,mBAAmB,QAC1B,KAAK,aACP,MAAM,KAAK,aAEb,GAAI,KAAK,cAAc,OAAS,EAE9B,MAAO,CACL,MAFY,KAAK,cAAc,MAAK,EAGpC,KAAM,EACd,EAEI,GAAI,KAAK,MACP,MAAO,CACL,MAAO,OACP,KAAM,EACd,EAEI,MAAMi5B,EAAoB,QAAQ,gBAClC,YAAK,UAAU,KAAKA,CAAiB,EAC9BA,EAAkB,OAC1B,CACD,OAAO79C,EAAQ,CACb,KAAK,MAAQ,GACb,KAAK,mBAAmB,OAAOA,CAAM,EACrC,UAAW69C,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EACd,CAAO,EAEH,KAAK,UAAU,OAAS,EACpB,KAAK,SAAS,iBAAiB,KAAK,cAAc,GACpD,KAAK,SAAS,aAAa,KAAK,cAAc,EAEhD,KAAK,mBAAqB,IAC3B,CACH,CACA,MAAM0D,EAAmC,CACvC,YAAY1qD,EAASymD,EAAO/lC,EAAK,CAC/B,KAAK,SAAW1gB,EAChB,KAAK,KAAOA,EAAQ,IACpB,KAAK,WAAaA,EAAQ,QAAQ,CAChC,MAAAymD,EACA,IAAA/lC,EACA,kBAAmB,KAAK,mBAAmB,KAAK,IAAI,EACpD,OAAQ,KAAK,QAAQ,KAAK,IAAI,EAC9B,QAAS,KAAK,SAAS,KAAK,IAAI,EAChC,WAAY,KAAK,YAAY,KAAK,IAAI,CAC5C,CAAK,EACD,KAAK,UAAY,GACjB,KAAK,aAAe,KACpB,KAAK,MAAQ,GACb,KAAK,aAAe,OACpB,KAAK,WAAa,KAClB,KAAK,SAAW,IACjB,CACD,oBAAqB,OACnB,MAAMqpC,EAAiBlB,IAAkB9tC,EAAA,KAAK,SAAS,cAAc,KAAK,UAAU,IAA3C,YAAAA,EAA8C,WAAW,EAC9FgvC,IAAmB,KAAK,SAAS,kBACnC,KAAK,aAAe,IAAI,MAAM,mCAAmCA,CAAc,eAAe,KAAK,SAAS,eAAe,IAAI,EAC/H,KAAK,SAAS,CAAC,EAElB,CACD,QAAS,QACPhvC,EAAA,KAAK,WAAL,MAAAA,EAAA,UAAgB,KACjB,CACD,QAAQn3B,EAAM,CACZ,MAAM6kB,EAAQ7kB,EAAK,MACf,KAAK,UAAU,OAAS,EACA,KAAK,UAAU,MAAK,EAC5B,QAAQ,CACxB,MAAO6kB,EACP,KAAM,EACd,CAAO,EAED,KAAK,aAAeA,EAEtB,KAAK,MAAQ,GACb,UAAWu+C,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EACd,CAAO,EAEH,KAAK,UAAU,OAAS,EACxB,KAAK,OAAM,CACZ,CACD,SAASnvD,EAAQ,CACf,KAAK,eAAL,KAAK,aAAiBsxD,GAAoBtxD,EAAQ,KAAK,IAAI,GAC3D,UAAWmvD,KAAqB,KAAK,UACnCA,EAAkB,OAAO,KAAK,YAAY,EAE5C,KAAK,UAAU,OAAS,EACxB,KAAK,aAAe,IACrB,CACD,YAAYj5B,EAAK,OACV,KAAK,uBACRhT,EAAA,KAAK,aAAL,MAAAA,EAAA,UAAkB,CAChB,OAAQgT,EAAI,MACpB,EAEG,CACD,IAAI,sBAAuB,CACzB,MAAO,EACR,CACD,MAAM,MAAO,CACX,GAAI,KAAK,aACP,MAAM,KAAK,aAEb,GAAI,KAAK,eAAiB,KAAM,CAC9B,MAAMtlB,EAAQ,KAAK,aACnB,YAAK,aAAe,KACb,CACL,MAAOA,EACP,KAAM,EACd,CACK,CACD,GAAI,KAAK,MACP,MAAO,CACL,MAAO,OACP,KAAM,EACd,EAEI,MAAMu+C,EAAoB,QAAQ,gBAClC,YAAK,UAAU,KAAKA,CAAiB,EAC9BA,EAAkB,OAC1B,CACD,OAAO79C,EAAQ,CACb,KAAK,MAAQ,GACb,UAAW69C,KAAqB,KAAK,UACnCA,EAAkB,QAAQ,CACxB,MAAO,OACP,KAAM,EACd,CAAO,EAEH,KAAK,UAAU,OAAS,EACpB,KAAK,SAAS,iBAAiB,KAAK,UAAU,GAChD,KAAK,SAAS,aAAa,KAAK,UAAU,EAE5C,KAAK,OAAM,CACZ,CACH,CAKA,MAAM8D,GAAW,wBACjB,SAASC,GAAeC,EAAW,CACjC,GAAIF,GAAS,KAAKE,CAAS,EACzB,OAAO,IAAI,IAAIA,CAAS,EAE1B,MAAMvnE,EAAM,QAAQ,iBAAiB,KAAK,EAC1C,OAAO,IAAI,IAAIA,EAAI,cAAcunE,CAAS,CAAC,CAC7C,CACA,MAAMC,EAAc,CAClB,YAAY/9D,EAAQ,CAClB,KAAK,OAASA,EACd,KAAK,IAAM69D,GAAe79D,EAAO,GAAG,EACpCisB,GAAO,KAAK,IAAI,WAAa,QAAS,2CAA2C,EACjF,KAAK,mBAAqB,KAC1B,KAAK,qBAAuB,EAC7B,CACD,IAAI,wBAAyB,OAC3B,QAAO4B,EAAA,KAAK,qBAAL,YAAAA,EAAyB,UAAW,CAC5C,CACD,eAAgB,CACd,OAAA5B,GAAO,CAAC,KAAK,mBAAoB,sDAAsD,EACvF,KAAK,mBAAqB,IAAI+xC,GAA0B,IAAI,EACrD,KAAK,kBACb,CACD,eAAezqC,EAAOC,EAAK,CACzB,GAAIA,GAAO,KAAK,uBACd,OAAO,KAET,MAAMkmC,EAAc,IAAIuE,GAA2B,KAAM1qC,EAAOC,CAAG,EACnE,YAAK,qBAAqB,KAAKkmC,CAAW,EACnCA,CACR,CACD,kBAAkBz9C,EAAQ,QACxB4R,EAAA,KAAK,qBAAL,MAAAA,EAAyB,OAAO5R,GAChC,UAAWxjB,KAAU,KAAK,qBAAqB,MAAM,CAAC,EACpDA,EAAO,OAAOwjB,CAAM,CAEvB,CACH,CACA,MAAM+hD,EAA0B,CAC9B,YAAYtgE,EAAQ,CAClB,KAAK,KAAOA,EAAO,IACnB,KAAK,MAAQ,GACb,KAAK,aAAe,KACpB,KAAK,WAAa,KAClB,MAAMsC,EAAStC,EAAO,OACtB,KAAK,eAAiBsC,EAAO,OAC7B,KAAK,QAAU,EACf,KAAK,UAAY,KACjB,KAAK,cAAgBA,EAAO,cAAgB,GAC5C,KAAK,gBAAkBA,EAAO,eAC1B,CAAC,KAAK,iBAAmB,CAAC,KAAK,gBACjC,KAAK,cAAgB,IAEvB,KAAK,sBAAwB,CAACA,EAAO,cACrC,KAAK,kBAAoB,CAACA,EAAO,aACjC,KAAK,gBAAkB,KACvB,KAAK,gBAAkB,QAAQ,gBAC/B,KAAK,mBAAqB,QAAQ,gBAClC,MAAMk+D,EAAK,QAAQ,iBAAiB,IAAI,EACxCA,EAAG,SAAS,MAAM,KAAK,IAAI,EAAE,KAAKC,GAAQ,CACxC,KAAK,eAAiBA,EAAK,KAC3B,KAAK,mBAAmBD,EAAG,iBAAiB,KAAK,IAAI,CAAC,EACtD,KAAK,mBAAmB,SACzB,EAAEh/D,GAAS,CACNA,EAAM,OAAS,WACjBA,EAAQ+8D,GAAoB,EAAG,KAAK,KAAK,IAAI,GAE/C,KAAK,aAAe/8D,EACpB,KAAK,mBAAmB,OAAOA,CAAK,CAC1C,CAAK,CACF,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,mBAAmB,OAChC,CACD,IAAI,UAAW,CACb,OAAO,KAAK,SACb,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,cACb,CACD,IAAI,kBAAmB,CACrB,OAAO,KAAK,iBACb,CACD,IAAI,sBAAuB,CACzB,OAAO,KAAK,qBACb,CACD,MAAM,MAAO,OAEX,GADA,MAAM,KAAK,gBAAgB,QACvB,KAAK,MACP,MAAO,CACL,MAAO,OACP,KAAM,EACd,EAEI,GAAI,KAAK,aACP,MAAM,KAAK,aAEb,MAAMqc,EAAQ,KAAK,gBAAgB,KAAI,EACvC,OAAIA,IAAU,MACZ,KAAK,gBAAkB,QAAQ,gBACxB,KAAK,SAEd,KAAK,SAAWA,EAAM,QACtBsS,EAAA,KAAK,aAAL,MAAAA,EAAA,UAAkB,CAChB,OAAQ,KAAK,QACb,MAAO,KAAK,cAClB,GAEW,CACL,MAFa,IAAI,WAAWtS,CAAK,EAAE,OAGnC,KAAM,EACZ,EACG,CACD,OAAOU,EAAQ,CACb,GAAI,CAAC,KAAK,gBAAiB,CACzB,KAAK,OAAOA,CAAM,EAClB,MACD,CACD,KAAK,gBAAgB,QAAQA,CAAM,CACpC,CACD,OAAOA,EAAQ,CACb,KAAK,aAAeA,EACpB,KAAK,gBAAgB,SACtB,CACD,mBAAmBmiD,EAAgB,CACjC,KAAK,gBAAkBA,EACvBA,EAAe,GAAG,WAAY,IAAM,CAClC,KAAK,gBAAgB,SAC3B,CAAK,EACDA,EAAe,GAAG,MAAO,IAAM,CAC7BA,EAAe,QAAO,EACtB,KAAK,MAAQ,GACb,KAAK,gBAAgB,SAC3B,CAAK,EACDA,EAAe,GAAG,QAASniD,GAAU,CACnC,KAAK,OAAOA,CAAM,CACxB,CAAK,EACG,CAAC,KAAK,uBAAyB,KAAK,mBACtC,KAAK,OAAO,IAAIkM,GAAe,uBAAuB,CAAC,EAErD,KAAK,cACP,KAAK,gBAAgB,QAAQ,KAAK,YAAY,CAEjD,CACH,CACA,MAAM81C,EAA2B,CAC/B,YAAYvgE,EAAQ61B,EAAOC,EAAK,CAC9B,KAAK,KAAO91B,EAAO,IACnB,KAAK,MAAQ,GACb,KAAK,aAAe,KACpB,KAAK,WAAa,KAClB,KAAK,QAAU,EACf,KAAK,gBAAkB,KACvB,KAAK,gBAAkB,QAAQ,gBAC/B,MAAMsC,EAAStC,EAAO,OACtB,KAAK,sBAAwB,CAACsC,EAAO,cACrC,MAAMk+D,EAAK,QAAQ,iBAAiB,IAAI,EACxC,KAAK,mBAAmBA,EAAG,iBAAiB,KAAK,KAAM,CACrD,MAAA3qC,EACA,IAAKC,EAAM,CACZ,EAAC,CACH,CACD,IAAI,sBAAuB,CACzB,OAAO,KAAK,qBACb,CACD,MAAM,MAAO,OAEX,GADA,MAAM,KAAK,gBAAgB,QACvB,KAAK,MACP,MAAO,CACL,MAAO,OACP,KAAM,EACd,EAEI,GAAI,KAAK,aACP,MAAM,KAAK,aAEb,MAAMjY,EAAQ,KAAK,gBAAgB,KAAI,EACvC,OAAIA,IAAU,MACZ,KAAK,gBAAkB,QAAQ,gBACxB,KAAK,SAEd,KAAK,SAAWA,EAAM,QACtBsS,EAAA,KAAK,aAAL,MAAAA,EAAA,UAAkB,CAChB,OAAQ,KAAK,OACnB,GAEW,CACL,MAFa,IAAI,WAAWtS,CAAK,EAAE,OAGnC,KAAM,EACZ,EACG,CACD,OAAOU,EAAQ,CACb,GAAI,CAAC,KAAK,gBAAiB,CACzB,KAAK,OAAOA,CAAM,EAClB,MACD,CACD,KAAK,gBAAgB,QAAQA,CAAM,CACpC,CACD,OAAOA,EAAQ,CACb,KAAK,aAAeA,EACpB,KAAK,gBAAgB,SACtB,CACD,mBAAmBmiD,EAAgB,CACjC,KAAK,gBAAkBA,EACvBA,EAAe,GAAG,WAAY,IAAM,CAClC,KAAK,gBAAgB,SAC3B,CAAK,EACDA,EAAe,GAAG,MAAO,IAAM,CAC7BA,EAAe,QAAO,EACtB,KAAK,MAAQ,GACb,KAAK,gBAAgB,SAC3B,CAAK,EACDA,EAAe,GAAG,QAASniD,GAAU,CACnC,KAAK,OAAOA,CAAM,CACxB,CAAK,EACG,KAAK,cACP,KAAK,gBAAgB,QAAQ,KAAK,YAAY,CAEjD,CACH,CAKA,MAAMoiD,GAA0B,IAC1BC,GAAoB,yHAC1B,MAAMC,GAAN,MAAMA,EAAU,CAwBd,YAAY,CACV,kBAAAC,EACA,UAAAziC,EACA,SAAA9G,CACJ,EAAK,CA0GHxE,EAAA,KAAAguC,IA+BAhuC,EAAA,KAAAiuC,IA2EAjuC,EAAA,KAAAkuC,IA/OAluC,EAAA,KAAAmuC,GAAc,QAAQ,iBACtBnuC,EAAA,KAAAiQ,GAAa,MACbjQ,EAAA,KAAAouC,GAAuB,IACvBpuC,EAAA,KAAAquC,GAAwB,CAAC,GAACjxC,GAAA,WAAW,gBAAX,MAAAA,GAA0B,UACpD4C,EAAA,KAAAsuC,GAAQ,MACRtuC,EAAA,KAAAuuC,GAAoB,MACpBvuC,EAAA,KAAAwuC,GAAc,GACdxuC,EAAA,KAAAyuC,GAAa,GACbzuC,EAAA,KAAA0uC,GAAU,MACV1uC,EAAA,KAAA2uC,GAAiB,MACjB3uC,EAAA,KAAA4uC,GAAY,GACZ5uC,EAAA,KAAA6uC,GAAS,GACT7uC,EAAA,KAAA8uC,GAAc,OAAO,OAAO,IAAI,GAChC9uC,EAAA,KAAA+uC,GAAuB,IACvB/uC,EAAA,KAAAgvC,GAAqB,MACrBhvC,EAAA,KAAAivC,GAAY,IACZjvC,EAAA,KAAAkvC,GAAqB,IAAI,SACzBlvC,EAAA,KAAAmvC,GAAa,YAWX,GAAIpB,aAA6B,eAC/B5qC,EAAA,KAAK6rC,GAAqBjB,WACjB,OAAOA,GAAsB,SACtC5qC,EAAA,KAAK6rC,GAAqB,IAAI,eAAe,CAC3C,MAAMvlB,EAAY,CAChBA,EAAW,QAAQskB,CAAiB,EACpCtkB,EAAW,MAAK,CACjB,CACT,CAAO,OAED,OAAM,IAAI,MAAM,6CAA6C,EAE/DtmB,EAAA,KAAK8M,GAAa9M,EAAA,KAAKwrC,GAAiBrjC,IACxCnI,EAAA,KAAK0rC,GAASrqC,EAAS,MAAQ7L,GAAY,YAC3CwK,EAAA,KAAKyrC,GAAYpqC,EAAS,UAC1BrB,EAAA,KAAKorC,GAAoB,CACvB,IAAK,KACL,WAAY,KACZ,IAAK,IACX,GACI,KAAM,CACJ,UAAA5pC,EACA,WAAAC,EACA,MAAA4Y,EACA,MAAAC,CACN,EAAQjZ,EAAS,QACbrB,EAAA,KAAKgsC,GAAa,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC3xB,EAAOC,EAAQ7Y,CAAU,GAC1DzB,EAAA,KAAKsrC,GAAa9pC,GAClBxB,EAAA,KAAKqrC,GAAc5pC,GACnBvF,EAAAjC,EAAA0wC,GAAUsB,GAAAC,IAAV,KAAAjyC,GACA7C,GAAmB+Q,EAAW9G,CAAQ,EACtCvB,EAAA,KAAKkrC,IAAY,QAAQ,QAAQ,IAAM,CACrClrC,EAAA6qC,GAAUwB,IAAmB,OAAO,IAAI,EACxCnsC,EAAA,KAAKorC,GAAoB,MACzBprC,EAAA,KAAK2rC,GAAc,KACzB,CAAK,EAAE,MAAM,IAAM,EAAE,CAClB,CACD,WAAW,eAAgB,CACzB,KAAM,CACJ,UAAAS,EACA,UAAAC,CACN,EAAQn3C,GAAiB,SACrB,OAAOmC,GAAO,KAAM,gBAAiB,IAAI,IAAI,CAAC,CAAC,aAAc,GAAG+0C,GAAaC,EAAY,YAAc,EAAE,YAAY,EAAG,CAAC,YAAa,GAAGD,GAAaC,EAAY,mBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC,CACxM,CACD,QAAS,CACP,MAAMC,EAAO,IAAM,CACjBxsC,EAAA,KAAKyrC,IAAQ,KAAM,EAAC,KAAK,CAAC,CACxB,MAAAt9D,EACA,KAAA+6D,CACR,IAAY,CACJ,GAAIA,EAAM,CACRlpC,EAAA,KAAKkrC,IAAY,UACjB,MACD,CACDlrC,EAAA,KAAKqrC,KAALnrC,EAAA,KAAKmrC,GAAUl9D,EAAM,MACrB,OAAO,OAAO6xB,EAAA,KAAK6rC,IAAa19D,EAAM,MAAM,EAC5CiuB,EAAA,KAAK2uC,GAAA0B,IAAL,UAAmBt+D,EAAM,OACzBq+D,GACR,EAASxsC,EAAA,KAAKkrC,IAAY,MAAM,CAChC,EACI,OAAAhrC,EAAA,KAAKurC,GAAUzrC,EAAA,KAAK+rC,IAAmB,UAAS,GAChD/rC,EAAA6qC,GAAUwB,IAAmB,IAAI,IAAI,EACrCG,IACOxsC,EAAA,KAAKkrC,IAAY,OACzB,CACD,OAAO,CACL,SAAA3pC,EACA,SAAAmrC,EAAW,IACf,EAAK,OACD,MAAMvuC,EAAQoD,EAAS,MAAQ7L,GAAY,WACrC0I,EAAWmD,EAAS,SAQ1B,GAPInD,IAAa4B,EAAA,KAAK2rC,MACpBe,GAAA,MAAAA,IACAxsC,EAAA,KAAKyrC,GAAYvtC,GACjB9G,GAAmB0I,EAAA,KAAK0rC,IAAgB,CACtC,SAAAttC,CACR,CAAO,GAECD,IAAU6B,EAAA,KAAK4rC,IAAQ,CACzBc,GAAA,MAAAA,IACAxsC,EAAA,KAAK0rC,GAASztC,GACd,MAAM9yB,EAAS,CACb,IAAK,KACL,WAAY,KACZ,IAAK+wB,EAAAjC,EAAA0wC,GAAU8B,GAAAC,IAAV,KAAAzyC,EAAkB6F,EAAA,KAAKqrC,IACpC,EACM,UAAW/pC,KAAOtB,EAAA,KAAKgsC,IACrB3gE,EAAO,WAAa20B,EAAA,KAAKisC,IAAmB,IAAI3qC,CAAG,EACnDj2B,EAAO,IAAMi2B,EACblF,EAAA,KAAK6uC,GAAA4B,IAAL,UAAaxhE,EAEhB,CACF,CACD,QAAS,OACP,MAAMyhE,EAAU,IAAIr4C,GAAe,2BAA2B,GAC9D0F,EAAA6F,EAAA,KAAKyrC,MAAL,MAAAtxC,EAAc,OAAO2yC,GAAS,MAAM,IAAM,IAC1C5sC,EAAA,KAAKurC,GAAU,MACfzrC,EAAA,KAAKkrC,IAAY,OAAO4B,CAAO,CAChC,CACD,IAAI,UAAW,CACb,OAAO9sC,EAAA,KAAKgsC,GACb,CACD,IAAI,qBAAsB,CACxB,OAAOhsC,EAAA,KAAK8rC,GACb,CA+ID,OAAO,SAAU,CACf,GAAI,EAAA9rC,EAAA,KAAKqsC,IAAmB,KAAO,GAGnC,CAAArsC,EAAA,KAAK+sC,IAAa,QAClB,SAAW,CACT,OAAA/mE,CACN,IAASg6B,EAAA,KAAKgtC,IAAgB,SACxBhnE,EAAO,OAAM,EAEfg6B,EAAA,KAAKgtC,IAAgB,QACtB,CAuEH,EArWE9B,GAAA,YACAl+B,GAAA,YACAm+B,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACOa,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAb,GAAA,YA+GPtB,GAAA,YAAA0B,GAAa,SAACU,EAAO,SACnB,GAAIntC,EAAA,KAAKmrC,IACP,QAEFjxC,EAAA8F,EAAA,KAAKsrC,KAAkB,MAAvBpxC,EAAuB,IAAQkC,EAAAjC,EAAA0wC,GAAU8B,GAAAC,IAAV,KAAAzyC,EAAkB6F,EAAA,KAAKqrC,MACtD,MAAM+B,EAAWptC,EAAA,KAAKgsC,IACpBqB,EAAsBrtC,EAAA,KAAK8rC,IAC7B,UAAWjyD,KAAQszD,EAAO,CACxB,GAAIC,EAAS,OAASzC,GAAyB,CAC7CtyC,GAAK,uDAAuD,EAC5D6H,EAAA,KAAKirC,GAAuB,IAC5B,MACD,CACD,GAAItxD,EAAK,MAAQ,OAAW,CAC1B,GAAIA,EAAK,OAAS,2BAA6BA,EAAK,OAAS,qBAAsB,CACjF,MAAMirB,EAAS9E,EAAA,KAAKgN,IACpB9M,EAAA,KAAK8M,GAAa,SAAS,cAAc,MAAM,GAC/ChN,EAAA,KAAKgN,IAAW,UAAU,IAAI,eAAe,EACzCnzB,EAAK,KAAO,MACdmmB,EAAA,KAAKgN,IAAW,aAAa,KAAM,GAAGnzB,EAAK,EAAE,EAAE,EAEjDirB,EAAO,OAAO9E,EAAA,KAAKgN,GAAU,CACvC,MAAmBnzB,EAAK,OAAS,oBACvBqmB,EAAA,KAAK8M,GAAahN,EAAA,KAAKgN,IAAW,YAEpC,QACD,CACDqgC,EAAoB,KAAKxzD,EAAK,GAAG,EACjCuiB,EAAA,KAAK4uC,GAAAsC,IAAL,UAAiBzzD,EAClB,CACF,EACDmxD,GAAA,YAAAsC,GAAW,SAACC,EAAM,OAChB,MAAMC,EAAU,SAAS,cAAc,MAAM,EACvCC,EAAoB,CACxB,MAAO,EACP,YAAa,EACb,QAASF,EAAK,MAAQ,GACtB,OAAQA,EAAK,OACb,SAAU,CAChB,EACIvtC,EAAA,KAAKgsC,IAAU,KAAKwB,CAAO,EAC3B,MAAMr7B,EAAKn5B,GAAK,UAAUgnB,EAAA,KAAKksC,IAAYqB,EAAK,SAAS,EACzD,IAAI/vB,EAAQ,KAAK,MAAMrL,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EACnC,MAAMvQ,EAAQ5B,EAAA,KAAK6rC,IAAY0B,EAAK,QAAQ,EACxC3rC,EAAM,WACR4b,GAAS,KAAK,GAAK,GAErB,IAAIkwB,EAAa1tC,EAAA,KAAKorC,KAAyBxpC,EAAM,kBAAoBA,EAAM,WAC/E8rC,EAAa7C,GAAU,cAAc,IAAI6C,CAAU,GAAKA,EACxD,MAAMC,EAAa,KAAK,MAAMx7B,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EACpCy7B,EAAaD,EAAavxC,EAAAjC,EAAA0wC,GAAUgD,GAAAC,IAAV,KAAA3zC,EAAqBuzC,EAAY9rC,EAAO5B,EAAA,KAAKqrC,KAC7E,IAAIp4D,EAAM9L,EACNq2C,IAAU,GACZvqC,EAAOk/B,EAAG,CAAC,EACXhrC,EAAMgrC,EAAG,CAAC,EAAIy7B,IAEd36D,EAAOk/B,EAAG,CAAC,EAAIy7B,EAAa,KAAK,IAAIpwB,CAAK,EAC1Cr2C,EAAMgrC,EAAG,CAAC,EAAIy7B,EAAa,KAAK,IAAIpwB,CAAK,GAE3C,MAAMuwB,EAAiB,mCACjBnpE,EAAW4oE,EAAQ,MACrBxtC,EAAA,KAAKgN,MAAehN,EAAA,KAAK0rC,KAC3B9mE,EAAS,KAAO,IAAI,IAAMqO,EAAO+sB,EAAA,KAAKwrC,KAAY,QAAQ,CAAC,CAAC,IAC5D5mE,EAAS,IAAM,IAAI,IAAMuC,EAAM64B,EAAA,KAAKurC,KAAa,QAAQ,CAAC,CAAC,MAE3D3mE,EAAS,KAAO,GAAGmpE,CAAc,GAAG96D,EAAK,QAAQ,CAAC,CAAC,MACnDrO,EAAS,IAAM,GAAGmpE,CAAc,GAAG5mE,EAAI,QAAQ,CAAC,CAAC,OAEnDvC,EAAS,SAAW,GAAGmpE,CAAc,IAAI/tC,EAAA6qC,GAAUqC,IAAeS,GAAY,QAAQ,CAAC,CAAC,MACxF/oE,EAAS,WAAa8oE,EACtBD,EAAkB,SAAWE,EAC7BH,EAAQ,aAAa,OAAQ,cAAc,EAC3CA,EAAQ,YAAcD,EAAK,IAC3BC,EAAQ,IAAMD,EAAK,IACfvtC,EAAA,KAAKorC,MACPoC,EAAQ,QAAQ,SAAW5rC,EAAM,4BAA8B2rC,EAAK,UAElE/vB,IAAU,IACZiwB,EAAkB,MAAQjwB,GAAS,IAAM,KAAK,KAEhD,IAAIwwB,EAAkB,GACtB,GAAIT,EAAK,IAAI,OAAS,EACpBS,EAAkB,WACTT,EAAK,MAAQ,KAAOA,EAAK,UAAU,CAAC,IAAMA,EAAK,UAAU,CAAC,EAAG,CACtE,MAAMU,EAAY,KAAK,IAAIV,EAAK,UAAU,CAAC,CAAC,EAC1CW,EAAY,KAAK,IAAIX,EAAK,UAAU,CAAC,CAAC,EACpCU,IAAcC,GAAa,KAAK,IAAID,EAAWC,CAAS,EAAI,KAAK,IAAID,EAAWC,CAAS,EAAI,MAC/FF,EAAkB,GAErB,CAWD,GAVIA,IACFP,EAAkB,YAAc7rC,EAAM,SAAW2rC,EAAK,OAASA,EAAK,OAEtEvtC,EAAA,KAAKisC,IAAmB,IAAIuB,EAASC,CAAiB,EACtDztC,EAAA,KAAKsrC,IAAkB,IAAMkC,EAC7BxtC,EAAA,KAAKsrC,IAAkB,WAAamC,EACpCrxC,EAAA,KAAK6uC,GAAA4B,IAAL,UAAa7sC,EAAA,KAAKsrC,KACdmC,EAAkB,SACpBztC,EAAA,KAAKgN,IAAW,OAAOwgC,CAAO,EAE5BC,EAAkB,OAAQ,CAC5B,MAAMU,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,aAAa,OAAQ,cAAc,EACtCnuC,EAAA,KAAKgN,IAAW,OAAOmhC,CAAE,CAC1B,CACF,EACDlD,GAAA,YAAA4B,GAAO,SAACxhE,EAAQ,OACd,KAAM,CACJ,IAAAi2B,EACA,WAAA62B,EACA,IAAA7xD,CACD,EAAG+E,EACE,CACJ,MAAAu2B,CACD,EAAGN,EACJ,IAAIjH,EAAY,GAIhB,GAHI2F,EAAA6qC,GAAUqC,IAAe,IAC3B7yC,EAAY,SAAS,EAAI2F,EAAA6qC,GAAUqC,GAAY,KAE7C/U,EAAW,cAAgB,GAAKA,EAAW,QAAS,CACtD,KAAM,CACJ,WAAAuV,CACD,EAAG9rC,EACE,CACJ,YAAA+vB,EACA,SAAA2M,CACD,EAAGnG,EACJ/7B,EAAAjC,EAAA0wC,GAAUuD,GAAAC,IAAV,KAAAl0C,EAAyB7zB,EAAKg4D,EAAWt+B,EAAA,KAAK4rC,IAAQ8B,GACtD,KAAM,CACJ,MAAA9lE,CACD,EAAGtB,EAAI,YAAYg7B,EAAI,WAAW,EAC/B15B,EAAQ,IACVyyB,EAAY,UAAUs3B,EAAc3xB,EAAA,KAAK4rC,IAAShkE,CAAK,KAAKyyB,CAAS,GAExE,CACG89B,EAAW,QAAU,IACvB99B,EAAY,UAAU89B,EAAW,KAAK,QAAQ99B,CAAS,IAErDA,EAAU,OAAS,IACrBuH,EAAM,UAAYvH,EAErB,EAaMsyC,GAAA,YAAAC,GAAO,SAAC0B,EAAO,KAAM,CAC1B,IAAIhoE,EAAM05B,EAAA,KAAKgtC,IAAgB,IAAIsB,MAAS,GAAE,EAC9C,GAAI,CAAChoE,EAAK,CACR,MAAMN,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAY,sBACnBA,EAAO,KAAOsoE,EACd,SAAS,KAAK,OAAOtoE,CAAM,EAC3BM,EAAMN,EAAO,WAAW,KAAM,CAC5B,MAAO,GACP,mBAAoB,EAC5B,CAAO,EACDg6B,EAAA,KAAKgtC,IAAgB,IAAIsB,EAAMhoE,CAAG,EAClC05B,EAAA,KAAKitC,IAAgB,IAAI3mE,EAAK,CAC5B,KAAM,EACN,OAAQ,EAChB,CAAO,CACF,CACD,OAAOA,CACR,EACM8nE,GAAA,YAAAC,GAAc,SAAC/nE,EAAKuI,EAAM0/D,EAAQ,CACvC,MAAMC,EAASxuC,EAAA,KAAKitC,IAAgB,IAAI3mE,CAAG,EACvCuI,IAAS2/D,EAAO,MAAQD,IAAWC,EAAO,SAG9CloE,EAAI,KAAO,GAAGuI,CAAI,MAAM0/D,CAAM,GAC9BC,EAAO,KAAO3/D,EACd2/D,EAAO,OAASD,EACjB,EACMpC,GAAA,YAAAC,GAA0B,UAAG,CAClC,GAAIpsC,EAAA,KAAKktC,MAAiB,KACxB,OAEF,MAAM5rC,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,MAAM,QAAU,EACpBA,EAAI,MAAM,WAAa,EACvBA,EAAI,MAAM,SAAW,MACrBA,EAAI,MAAM,SAAW,WACrBA,EAAI,YAAc,IAClB,SAAS,KAAK,OAAOA,CAAG,EACxBpB,EAAA,KAAKgtC,GAAe5rC,EAAI,sBAAqB,EAAG,QAChDA,EAAI,OAAM,CACX,EACMusC,GAAA,YAAAC,GAAU,SAACJ,EAAY9rC,EAAO0sC,EAAM,CACzC,MAAMG,EAAezuC,EAAA,KAAK+sC,IAAa,IAAIW,CAAU,EACrD,GAAIe,EACF,OAAOA,EAET,MAAMnoE,EAAM81B,EAAA,KAAKuwC,GAAAC,IAAL,UAAa0B,GACzBhoE,EAAI,OAAO,MAAQA,EAAI,OAAO,OAASskE,GACvCxuC,EAAA,KAAKgyC,GAAAC,IAAL,UAAoB/nE,EAAKskE,GAAmB8C,GAC5C,MAAMgB,EAAUpoE,EAAI,YAAY,EAAE,EAC5BqoE,EAASD,EAAQ,sBACjBE,EAAU,KAAK,IAAIF,EAAQ,sBAAsB,EACvDpoE,EAAI,OAAO,MAAQA,EAAI,OAAO,OAAS,EACvC,IAAIH,EAAQ,GACZ,OAAIwoE,EACFxoE,EAAQwoE,GAAUA,EAASC,IAEvBx5C,GAAiB,SAAS,WAC5BiD,GAAK,mHAAwH,EAE3HuJ,EAAM,OACRz7B,EAAQy7B,EAAM,OACLA,EAAM,UACfz7B,EAAQ,EAAIy7B,EAAM,UAGtB5B,EAAA,KAAK+sC,IAAa,IAAIW,EAAYvnE,CAAK,EAChCA,CACR,EArED42B,EAhSI8tC,GAgSG8B,IAmBP5vC,EAnTI8tC,GAmTGuD,IASPrxC,EA5TI8tC,GA4TGsB,IAcPpvC,EA1UI8tC,GA0UGgD,IAvTP9wC,EAnBI8tC,GAmBGkC,GAAe,IAAI,KAC1BhwC,EApBI8tC,GAoBGmC,GAAkB,IAAI,KAC7BjwC,EArBI8tC,GAqBGoC,GAAkB,IAAI,SAC7BlwC,EAtBI8tC,GAsBGqC,GAAe,MACtBnwC,EAvBI8tC,GAuBGwB,GAAqB,IAAI,KAvBlC,IAAMh2C,GAANw0C,GAyWA,MAAMgE,EAAQ,CACZ,OAAO,YAAYC,EAAK,CACtB,MAAM3B,EAAQ,GACR4B,EAAS,CACb,MAAA5B,EACA,OAAQ,OAAO,OAAO,IAAI,CAChC,EACI,SAAS6B,EAAKC,EAAM,OAClB,GAAI,CAACA,EACH,OAEF,IAAIv1C,EAAM,KACV,MAAMxnB,EAAO+8D,EAAK,KAClB,GAAI/8D,IAAS,QACXwnB,EAAMu1C,EAAK,cACDJ,GAAQ,gBAAgB38D,CAAI,GAE7BioB,EAAA80C,GAAA,YAAAA,EAAM,aAAN,MAAA90C,EAAkB,YAC3BT,EAAMu1C,EAAK,WAAW,YACbA,EAAK,QACdv1C,EAAMu1C,EAAK,WAJX,QAWF,GALIv1C,IAAQ,MACVyzC,EAAM,KAAK,CACT,IAAAzzC,CACV,CAAS,EAEC,EAACu1C,EAAK,SAGV,UAAW/xB,KAAS+xB,EAAK,SACvBD,EAAK9xB,CAAK,CAEb,CACD,OAAA8xB,EAAKF,CAAG,EACDC,CACR,CACD,OAAO,gBAAgB78D,EAAM,CAC3B,MAAO,EAAEA,IAAS,YAAcA,IAAS,SAAWA,IAAS,UAAYA,IAAS,SACnF,CACH,CAwBA,MAAMg9D,GAA2B,MAC3BC,GAA8B,IACpC,SAASv4C,GAAY3a,EAAM,GAAI,CACzB,OAAOA,GAAQ,UAAYA,aAAe,IAC5CA,EAAM,CACJ,IAAKA,CACX,GACaA,aAAe,aAAe,YAAY,OAAOA,CAAG,KAC7DA,EAAM,CACJ,KAAMA,CACZ,GAEE,MAAMmzD,EAAO,IAAIC,GACX,CACJ,MAAAhnB,CACD,EAAG+mB,EACEvsE,EAAMoZ,EAAI,IAAMqzD,GAAWrzD,EAAI,GAAG,EAAI,KACtCjZ,EAAOiZ,EAAI,KAAOszD,GAAYtzD,EAAI,IAAI,EAAI,KAC1C8rD,EAAc9rD,EAAI,aAAe,KACjCysD,EAAkBzsD,EAAI,kBAAoB,GAC1CuzD,EAAWvzD,EAAI,UAAY,KAC3BwzD,EAAiBxzD,EAAI,iBAAiB0Z,GAAwB1Z,EAAI,MAAQ,KAC1EmsD,EAAiB,OAAO,UAAUnsD,EAAI,cAAc,GAAKA,EAAI,eAAiB,EAAIA,EAAI,eAAiBizD,GAC7G,IAAIQ,EAASzzD,EAAI,kBAAkB4Z,GAAY5Z,EAAI,OAAS,KAC5D,MAAMic,EAAYjc,EAAI,UAChB0zD,EAAa,OAAO1zD,EAAI,YAAe,UAAY,CAACgb,GAAahb,EAAI,UAAU,EAAIA,EAAI,WAAa,KACpG2zD,EAAUC,GAAkB5zD,EAAI,OAAO,EACvC6zD,EAAa7zD,EAAI,aAAe,GAChC8zD,EAAoB9zD,EAAI,oBAAsByb,GAAWg1B,GAAwB/E,IACjFqoB,EAASH,GAAkB5zD,EAAI,MAAM,EACrCg0D,EAAsBJ,GAAkB5zD,EAAI,mBAAmB,EAC/Di0D,EAA0Bj0D,EAAI,0BAA4Byb,GAAWi1B,GAA8BP,IACnG+jB,EAAUN,GAAkB5zD,EAAI,OAAO,EACvCm0D,EAAcn0D,EAAI,cAAgByb,GAAWk1B,GAAkBN,IAC/D+jB,EAAep0D,EAAI,eAAiB,GACpCq0D,EAAe,OAAO,UAAUr0D,EAAI,YAAY,GAAKA,EAAI,aAAe,GAAKA,EAAI,aAAe,GAChG8d,EAAkB9d,EAAI,kBAAoB,GAC1Cs0D,GAA6B,OAAOt0D,EAAI,4BAA+B,UAAYA,EAAI,2BAA6B,CAACyb,GACrH84C,GAA0B,OAAOv0D,EAAI,yBAA4B,UAAYA,EAAI,wBAA0B,CAACyb,KAAatC,GAAiB,SAAS,WAAa,CAAC,WAAW,QAC5Kq7C,GAAuB,OAAO,UAAUx0D,EAAI,oBAAoB,EAAIA,EAAI,qBAAuB,GAC/FqnC,GAAkB,OAAOrnC,EAAI,iBAAoB,UAAYA,EAAI,gBAAkByb,GACnFg5C,GAAsBz0D,EAAI,sBAAwB,GAClD00D,EAAY10D,EAAI,YAAc,GAC9B+mC,EAAgB/mC,EAAI,eAAiB,WAAW,SAChDupD,EAAevpD,EAAI,eAAiB,GACpCwpD,EAAgBxpD,EAAI,gBAAkB,GACtC20D,EAAmB30D,EAAI,mBAAqB,GAC5C40D,GAAS50D,EAAI,SAAW,GACxB60D,GAAgB70D,EAAI,gBAAkByb,GAAW+0B,GAAoBlF,IACrEwpB,GAAgB90D,EAAI,gBAAkByb,GAAW80B,GAAoBpE,IACrEhB,GAAYnrC,EAAI,YAAc,GAC9B+0D,GAAU/0D,EAAI,UAAY,GAC1BzW,EAASiqE,EAAiBA,EAAe,OAASxzD,EAAI,QAAU,IAChEg1D,EAAiB,OAAOh1D,EAAI,gBAAmB,UAAYA,EAAI,eAAiB,CAACyb,IAAY,CAAC4rB,GAC9F4tB,EAAiB,OAAOj1D,EAAI,gBAAmB,UAAYA,EAAI,eAAiB,CAAC,EAAE8zD,IAAsBpoB,IAAwBuoB,IAA4B9jB,IAA8BgkB,IAAgB9jB,IAAkBsjB,GAAWK,GAAuBE,GAAWpyC,GAAgB6xC,EAAS,SAAS,OAAO,GAAK7xC,GAAgBkyC,EAAqB,SAAS,OAAO,GAAKlyC,GAAgBoyC,EAAS,SAAS,OAAO,GAC3ZltB,EAAe,KACrB9qB,GAAkBD,CAAS,EAC3B,MAAMi5C,EAAmB,CACvB,cAAe,IAAIL,GAAc,CAC/B,cAAA9tB,EACA,UAAAoE,EACN,CAAK,EACD,cAAe,IAAI2pB,GAAc,CAC/B,MAAA1oB,EACA,cAAArF,CACN,CAAK,EACD,kBAAmBkuB,EAAiB,KAAO,IAAInB,EAAkB,CAC/D,QAASH,EACT,aAAcE,CACpB,CAAK,EACD,wBAAyBoB,EAAiB,KAAO,IAAIhB,EAAwB,CAC3E,QAASD,CACf,CAAK,EACD,YAAaiB,EAAiB,KAAO,IAAId,EAAY,CACnD,QAASD,CACf,CAAK,CACL,EACE,GAAI,CAACT,EAAQ,CACX,MAAM0B,EAAe,CACnB,UAAAl5C,EACA,KAAM7C,GAAoB,UAChC,EACIq6C,EAAS0B,EAAa,KAAOv7C,GAAU,SAASu7C,CAAY,EAAI,IAAIv7C,GAAUu7C,CAAY,EAC1FhC,EAAK,QAAUM,CAChB,CACD,MAAM2B,EAAY,CAChB,MAAAhpB,EACA,WAAY,UACZ,KAAArlD,EACA,SAAAwsE,EACA,iBAAAoB,EACA,eAAAxI,EACA,OAAA5iE,EACA,WAAAmqE,EACA,UAAAgB,EACA,iBAAkB,CAChB,aAAAL,EACA,gBAAAhtB,GACA,aAAA+sB,EACA,gBAAAt2C,EACA,2BAAAw2C,GACA,wBAAAC,GACA,qBAAAC,GACA,oBAAAC,GACA,eAAAO,EACA,QAAAD,GACA,eAAAE,EACA,QAAAtB,EACA,OAAAI,EACA,oBAAAC,EACA,QAAAE,CACD,CACL,EACQmB,EAAkB,CACtB,cAAAtuB,EACA,OAAA6tB,GACA,aAAA5tB,EACA,cAAe,CACb,iBAAA2tB,EACA,UAAAD,CACD,CACL,EACE,OAAAjB,EAAO,QAAQ,KAAK,UAAY,CAC9B,GAAIN,EAAK,UACP,MAAM,IAAI,MAAM,iBAAiB,EAEnC,GAAIM,EAAO,UACT,MAAM,IAAI,MAAM,sBAAsB,EAExC,MAAM6B,EAAkB7B,EAAO,eAAe,gBAAgB,gBAAiB2B,EAAWruE,EAAO,CAACA,EAAK,MAAM,EAAI,IAAI,EACrH,IAAIwuE,EACJ,GAAI/B,EACF+B,EAAgB,IAAIlM,GAAuBmK,EAAgB,CACzD,aAAAjK,EACA,cAAAC,CACR,CAAO,UACQ,CAACziE,EAAM,CAChB,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,4CAA4C,EAE9D,IAAI4uE,EACJ,GAAI/5C,GACF,GAAIqG,GAAgBl7B,CAAG,EAAG,CACxB,GAAI,OAAO,MAAU,KAAe,OAAO,SAAa,KAAe,EAAE,SAAU,SAAS,WAC1F,MAAM,IAAI,MAAM,qFAAqF,EAEvG4uE,EAAgB5I,EAC1B,MACU4I,EAAgBpH,QAGlBoH,EAAgB1zC,GAAgBl7B,CAAG,EAAIgmE,GAAiBe,GAE1D4H,EAAgB,IAAIC,EAAc,CAChC,IAAA5uE,EACA,OAAA2C,EACA,YAAAuiE,EACA,gBAAAW,EACA,eAAAN,EACA,aAAA5C,EACA,cAAAC,CACR,CAAO,CACF,CACD,OAAO8L,EAAgB,KAAKG,GAAY,CACtC,GAAItC,EAAK,UACP,MAAM,IAAI,MAAM,iBAAiB,EAEnC,GAAIM,EAAO,UACT,MAAM,IAAI,MAAM,sBAAsB,EAExC,MAAM3hE,EAAiB,IAAId,GAAeo7C,EAAOqpB,EAAUhC,EAAO,IAAI,EAChErwD,EAAY,IAAIsyD,GAAgB5jE,EAAgBqhE,EAAMoC,EAAeF,EAAiBH,CAAgB,EAC5G/B,EAAK,WAAa/vD,EAClBtR,EAAe,KAAK,QAAS,IAAI,CACvC,CAAK,CACF,GAAE,MAAMqhE,EAAK,YAAY,MAAM,EACzBA,CACT,CACA,SAASE,GAAWrtB,EAAK,CACvB,GAAIA,aAAe,IACjB,OAAOA,EAAI,KAEb,GAAI,OAAOA,GAAQ,SAAU,CAC3B,GAAIvqB,GACF,OAAOuqB,EAET,MAAMp/C,EAAM,IAAI,MAAMo/C,EAAK,OAAO,QAAQ,EAC1C,GAAIp/C,EACF,OAAOA,EAAI,IAEd,CACD,MAAM,IAAI,MAAM,oFAAyF,CAC3G,CACA,SAAS0sE,GAAYttB,EAAK,CACxB,GAAIvqB,IAAY,OAAO,OAAW,KAAeuqB,aAAe,OAC9D,MAAM,IAAI,MAAM,mEAAmE,EAErF,GAAIA,aAAe,YAAcA,EAAI,aAAeA,EAAI,OAAO,WAC7D,OAAOA,EAET,GAAI,OAAOA,GAAQ,SACjB,OAAOxoB,GAAcwoB,CAAG,EAE1B,GAAIA,aAAe,aAAe,YAAY,OAAOA,CAAG,GAAK,OAAOA,GAAQ,UAAY,CAAC,MAAMA,GAAA,YAAAA,EAAK,MAAM,EACxG,OAAO,IAAI,WAAWA,CAAG,EAE3B,MAAM,IAAI,MAAM,4GAAiH,CACnI,CACA,SAAS4tB,GAAkB5tB,EAAK,CAC9B,GAAI,OAAOA,GAAQ,SACjB,OAAO,KAET,GAAIA,EAAI,SAAS,GAAG,EAClB,OAAOA,EAET,MAAM,IAAI,MAAM,yBAAyBA,CAAG,gCAAgC,CAC9E,CACA,MAAM2vB,GAAa7gD,GAAK,OAAOA,GAAM,UAAY,OAAO,UAAUA,GAAA,YAAAA,EAAG,GAAG,GAAKA,EAAE,KAAO,GAAK,OAAO,UAAUA,GAAA,YAAAA,EAAG,GAAG,GAAKA,EAAE,KAAO,EAC1H8gD,GAAc9gD,GAAK,OAAOA,GAAM,UAAY,OAAOA,GAAA,YAAAA,EAAG,OAAS,SAC/DoG,GAAsBiG,GAAqB,KAAK,KAAMw0C,GAAYC,EAAW,SACnF,MAAMC,GAAN,MAAMA,EAAuB,CAE3B,aAAc,CACZ,KAAK,YAAc,QAAQ,gBAC3B,KAAK,WAAa,KAClB,KAAK,QAAU,KACf,KAAK,MAAQ,IAAIpsC,GAAAosC,GAAuB1oB,IAAvB,GAA+B,GAChD,KAAK,UAAY,GACjB,KAAK,WAAa,KAClB,KAAK,WAAa,IACnB,CACD,IAAI,SAAU,CACZ,OAAO,KAAK,YAAY,OACzB,CACD,MAAM,SAAU,aACd,KAAK,UAAY,GACjB,GAAI,EACEjvB,EAAA,KAAK,UAAL,MAAAA,EAAc,OAChB,KAAK,QAAQ,gBAAkB,IAEjC,OAAMD,EAAA,KAAK,aAAL,YAAAA,EAAiB,UACxB,OAAQ8V,EAAI,CACX,MAAIjC,EAAA,KAAK,UAAL,MAAAA,EAAc,MAChB,OAAO,KAAK,QAAQ,gBAEhBiC,CACP,CACD,KAAK,WAAa,MAClBhC,EAAA,KAAK,UAAL,MAAAA,EAAc,UACd,KAAK,QAAU,IAChB,CACH,EA9BSob,GAAA,YAAPrsB,EADI+0C,GACG1oB,GAAS,GADlB,IAAMimB,GAANyC,GAgCA,MAAMn8C,EAAsB,CAC1B,YAAYnwB,EAAQkgE,EAAaC,EAAkB,GAAOC,EAA6B,KAAM,CAC3F,KAAK,OAASpgE,EACd,KAAK,YAAckgE,EACnB,KAAK,gBAAkBC,EACvB,KAAK,2BAA6BC,EAClC,KAAK,gBAAkB,GACvB,KAAK,mBAAqB,GAC1B,KAAK,0BAA4B,GACjC,KAAK,0BAA4B,GACjC,KAAK,iBAAmB,QAAQ,eACjC,CACD,iBAAiBvlD,EAAU,CACzB,KAAK,gBAAgB,KAAKA,CAAQ,CACnC,CACD,oBAAoBA,EAAU,CAC5B,KAAK,mBAAmB,KAAKA,CAAQ,CACtC,CACD,2BAA2BA,EAAU,CACnC,KAAK,0BAA0B,KAAKA,CAAQ,CAC7C,CACD,2BAA2BA,EAAU,CACnC,KAAK,0BAA0B,KAAKA,CAAQ,CAC7C,CACD,YAAYwlD,EAAOh+C,EAAO,CACxB,UAAWxH,KAAY,KAAK,gBAC1BA,EAASwlD,EAAOh+C,CAAK,CAExB,CACD,eAAei+C,EAAQ/7D,EAAO,CAC5B,KAAK,iBAAiB,QAAQ,KAAK,IAAM,CACvC,UAAWsW,KAAY,KAAK,mBAC1BA,EAASylD,EAAQ/7D,CAAK,CAE9B,CAAK,CACF,CACD,sBAAsB8d,EAAO,CAC3B,KAAK,iBAAiB,QAAQ,KAAK,IAAM,CACvC,UAAWxH,KAAY,KAAK,0BAC1BA,EAASwH,CAAK,CAEtB,CAAK,CACF,CACD,uBAAwB,CACtB,KAAK,iBAAiB,QAAQ,KAAK,IAAM,CACvC,UAAWxH,KAAY,KAAK,0BAC1BA,GAER,CAAK,CACF,CACD,gBAAiB,CACf,KAAK,iBAAiB,SACvB,CACD,iBAAiBwlD,EAAO/lC,EAAK,CAC3BxH,GAAY,wDAAwD,CACrE,CACD,OAAQ,CAAE,CACZ,CACA,MAAMy5C,EAAiB,CACrB,YAAYC,EAAS3yD,EAAW,CAC9B,KAAK,SAAW2yD,EAChB,KAAK,WAAa3yD,CACnB,CACD,IAAI,mBAAoB,CACtB,OAAO,KAAK,WAAW,iBACxB,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,WAAW,aACxB,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,WAAW,aACxB,CACD,IAAI,UAAW,CACb,OAAO,KAAK,SAAS,QACtB,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,SAAS,YACtB,CACD,IAAI,WAAY,CACd,OAAOkY,GAAO,KAAM,YAAa,CAAC,CAAC,KAAK,WAAW,WAAW,CAC/D,CACD,IAAI,YAAa,CACf,OAAO,KAAK,WAAW,WACxB,CACD,QAAQiX,EAAY,CAClB,OAAO,KAAK,WAAW,QAAQA,CAAU,CAC1C,CACD,aAAa/+B,EAAK,CAChB,OAAO,KAAK,WAAW,aAAaA,CAAG,CACxC,CACD,iBAAkB,CAChB,OAAO,KAAK,WAAW,iBACxB,CACD,eAAesF,EAAI,CACjB,OAAO,KAAK,WAAW,eAAeA,CAAE,CACzC,CACD,eAAgB,CACd,OAAO,KAAK,WAAW,eACxB,CACD,eAAgB,CACd,OAAO,KAAK,WAAW,eACxB,CACD,aAAc,CACZ,OAAO,KAAK,WAAW,aACxB,CACD,sBAAuB,CACrB,OAAO,KAAK,WAAW,sBACxB,CACD,eAAgB,CACd,OAAO,KAAK,WAAW,eACxB,CACD,gBAAiB,CACf,OAAO,KAAK,WAAW,gBACxB,CACD,cAAe,CACb,OAAO,KAAK,WAAW,iBACxB,CACD,YAAa,CACX,OAAO,KAAK,WAAW,YACxB,CACD,yBAAyB,CACvB,OAAAknD,EAAS,SACV,EAAG,GAAI,CACN,KAAM,CACJ,gBAAA+H,CACD,EAAG,KAAK,WAAW,mBAAmB/H,CAAM,EAC7C,OAAO,KAAK,WAAW,yBAAyB+H,CAAe,CAChE,CACD,gBAAiB,CACf,OAAO,KAAK,WAAW,gBACxB,CACD,aAAc,CACZ,OAAO,KAAK,WAAW,aACxB,CACD,aAAc,CACZ,OAAO,KAAK,WAAW,aACxB,CACD,SAAU,CACR,OAAO,KAAK,WAAW,SACxB,CACD,cAAe,CACb,OAAO,KAAK,WAAW,cACxB,CACD,iBAAkB,CAChB,OAAO,KAAK,WAAW,uBAAuB,OAC/C,CACD,QAAQiO,EAAkB,GAAO,CAC/B,OAAO,KAAK,WAAW,aAAaA,GAAmB,KAAK,SAAS,CACtE,CACD,SAAU,CACR,OAAO,KAAK,YAAY,SACzB,CACD,iBAAiBxiE,EAAK,CACpB,OAAO,KAAK,WAAW,iBAAiBA,CAAG,CAC5C,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,WAAW,aACxB,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,WAAW,WACxB,CACD,iBAAkB,CAChB,OAAO,KAAK,WAAW,iBACxB,CACD,cAAe,CACb,OAAO,KAAK,WAAW,cACxB,CACD,wBAAyB,CACvB,OAAO,KAAK,WAAW,wBACxB,CACH,cACA,MAAMyiE,EAAa,CAEjB,YAAYthC,EAAWuhC,EAAU9yD,EAAWwxD,EAAS,GAAO,CAuR5D9zC,EAAA,KAAAq1C,IAxRAr1C,EAAA,KAAAs1C,GAAkB,IAEhB,KAAK,WAAazhC,EAClB,KAAK,UAAYuhC,EACjB,KAAK,WAAa9yD,EAClB,KAAK,OAASwxD,EAAS,IAAInxC,GAAc,KACzC,KAAK,QAAUmxC,EACf,KAAK,WAAaxxD,EAAU,WAC5B,KAAK,KAAO,IAAIizD,GAChB,KAAK,cAAgB,IAAI,IACzB,KAAK,UAAY,EAClB,CACD,IAAI,YAAa,CACf,OAAO,KAAK,WAAa,CAC1B,CACD,IAAI,QAAS,CACX,OAAO,KAAK,UAAU,MACvB,CACD,IAAI,KAAM,CACR,OAAO,KAAK,UAAU,GACvB,CACD,IAAI,UAAW,CACb,OAAO,KAAK,UAAU,QACvB,CACD,IAAI,MAAO,CACT,OAAO,KAAK,UAAU,IACvB,CACD,YAAY,CACV,MAAAn0C,EACA,SAAAC,EAAW,KAAK,OAChB,QAAAC,EAAU,EACV,QAAAC,EAAU,EACV,SAAAC,EAAW,EACZ,EAAG,GAAI,CACN,OAAO,IAAIP,GAAa,CACtB,QAAS,KAAK,KACd,SAAU,KAAK,SACf,MAAAG,EACA,SAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,CACN,CAAK,CACF,CACD,eAAe,CACb,OAAA09B,EAAS,SACV,EAAG,GAAI,CACN,KAAM,CACJ,gBAAA+H,CACD,EAAG,KAAK,WAAW,mBAAmB/H,CAAM,EAC7C,OAAO,KAAK,WAAW,eAAe,KAAK,WAAY+H,CAAe,CACvE,CACD,cAAe,CACb,OAAO,KAAK,WAAW,iBAAiB,KAAK,UAAU,CACxD,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,WAAW,aACxB,CACD,IAAI,WAAY,CACd,OAAOzsC,GAAO,KAAM,YAAa,CAAC,CAAC,KAAK,WAAW,WAAW,CAC/D,CACD,MAAM,QAAS,OACb,QAAO4C,EAAA,KAAK,WAAW,cAAhB,YAAAA,EAA6B,SAAS,KAAK,cAAe,IAClE,CACD,OAAO,CACL,cAAAo4C,EACA,SAAAhxC,EACA,OAAA06B,EAAS,UACT,eAAAuW,EAAiBz9C,GAAe,OAChC,UAAAsF,EAAY,KACZ,WAAAm/B,EAAa,KACb,6BAAAiZ,EAA+B,KAC/B,oBAAAvZ,EAAsB,KACtB,WAAAxwB,EAAa,KACb,uBAAAgqC,EAAyB,KACzB,UAAAriC,EAAY,EAChB,EAAK,UACDlW,EAAA,KAAK,SAAL,MAAAA,EAAa,KAAK,WAClB,MAAMw4C,EAAa,KAAK,WAAW,mBAAmB1W,EAAQuW,EAAgBE,EAAwBriC,CAAS,EACzG,CACJ,gBAAA2zB,EACA,SAAA9I,CACD,EAAGyX,EACJzyC,EAAA,KAAKmyC,GAAkB,IACvBI,MAAiC,KAAK,WAAW,yBAAyBzO,CAAe,GACzF,IAAI4O,EAAc,KAAK,cAAc,IAAI1X,CAAQ,EAC5C0X,IACHA,EAAc,OAAO,OAAO,IAAI,EAChC,KAAK,cAAc,IAAI1X,EAAU0X,CAAW,GAE1CA,EAAY,4BACd,aAAaA,EAAY,yBAAyB,EAClDA,EAAY,0BAA4B,MAE1C,MAAMC,EAAc,CAAC,EAAE7O,EAAkBlsC,GAAoB,OACxD86C,EAAY,yBACfA,EAAY,uBAAyB,QAAQ,gBAC7CA,EAAY,aAAe,CACzB,QAAS,CAAE,EACX,UAAW,CAAE,EACb,UAAW,GACX,eAAgB,IACxB,GACM14C,EAAA,KAAK,SAAL,MAAAA,EAAa,KAAK,gBAClB,KAAK,kBAAkBy4C,CAAU,GAEnC,MAAMG,EAAWtnE,GAAS,OACxBonE,EAAY,YAAY,OAAOG,CAAkB,EAC7CF,GACF3yC,EAAA,KAAKmyC,GAAkB,IAEzBj2C,EAAA,KAAKg2C,GAAAY,IAAL,WACIxnE,GACFunE,EAAmB,WAAW,OAAOvnE,CAAK,EAC1C,KAAK,mBAAmB,CACtB,YAAAonE,EACA,OAAQpnE,aAAiB,MAAQA,EAAQ,IAAI,MAAMA,CAAK,CAClE,CAAS,GAEDunE,EAAmB,WAAW,UAE5B,KAAK,SACP,KAAK,OAAO,QAAQ,WAAW,EAC/B,KAAK,OAAO,QAAQ,SAAS,GACzB54C,EAAA,WAAW,QAAX,MAAAA,EAAkB,SACpB,WAAW,MAAM,IAAI,KAAK,WAAY,KAAK,MAAM,EAG3D,EACU44C,EAAqB,IAAIE,GAAmB,CAChD,SAAUH,EACV,OAAQ,CACN,cAAAP,EACA,SAAAhxC,EACA,UAAAlH,EACA,WAAAm/B,CACD,EACD,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,oBAAAN,EACA,aAAc0Z,EAAY,aAC1B,UAAW,KAAK,WAChB,cAAe,KAAK,WAAW,cAC/B,cAAe,KAAK,WAAW,cAC/B,yBAA0B,CAACC,EAC3B,OAAQ,KAAK,QACb,WAAAnqC,CACN,CAAK,GACAkqC,EAAY,cAAZA,EAAY,YAAgB,IAAI,MAAO,IAAIG,CAAkB,EAC9D,MAAMG,EAAaH,EAAmB,KACtC,eAAQ,IAAI,CAACH,EAAY,uBAAuB,QAASH,CAA4B,CAAC,EAAE,KAAK,CAAC,CAAClZ,EAAcP,CAAqB,IAAM,QACtI,GAAI,KAAK,UAAW,CAClB8Z,IACA,MACD,CAED,IADA34C,GAAA,KAAK,SAAL,MAAAA,GAAa,KAAK,aACd,EAAE6+B,EAAsB,gBAAkBgL,GAC5C,MAAM,IAAI,MAAM,qIAA0I,EAE5J+O,EAAmB,mBAAmB,CACpC,aAAAxZ,EACA,sBAAAP,CACR,CAAO,EACD+Z,EAAmB,oBAAmB,CAC5C,CAAK,EAAE,MAAMD,CAAQ,EACVI,CACR,CACD,gBAAgB,CACd,OAAAjX,EAAS,UACT,eAAAuW,EAAiBz9C,GAAe,OAChC,uBAAA29C,EAAyB,KACzB,UAAAriC,EAAY,EACb,EAAG,GAAI,OACN,SAAS8iC,GAAsB,CACzBP,EAAY,aAAa,YAC3BA,EAAY,qBAAqB,QAAQA,EAAY,YAAY,EACjEA,EAAY,YAAY,OAAOQ,CAAU,EAE5C,CACD,MAAMT,EAAa,KAAK,WAAW,mBAAmB1W,EAAQuW,EAAgBE,EAAwBriC,EAAW,EAAI,EACrH,IAAIuiC,EAAc,KAAK,cAAc,IAAID,EAAW,QAAQ,EACvDC,IACHA,EAAc,OAAO,OAAO,IAAI,EAChC,KAAK,cAAc,IAAID,EAAW,SAAUC,CAAW,GAEzD,IAAIQ,EACJ,OAAKR,EAAY,uBACfQ,EAAa,OAAO,OAAO,IAAI,EAC/BA,EAAW,oBAAsBD,EACjCP,EAAY,qBAAuB,QAAQ,iBAC1CA,EAAY,cAAZA,EAAY,YAAgB,IAAI,MAAO,IAAIQ,CAAU,EACtDR,EAAY,aAAe,CACzB,QAAS,CAAE,EACX,UAAW,CAAE,EACb,UAAW,GACX,eAAgB,IACxB,GACMz4C,EAAA,KAAK,SAAL,MAAAA,EAAa,KAAK,gBAClB,KAAK,kBAAkBw4C,CAAU,GAE5BC,EAAY,qBAAqB,OACzC,CACD,kBAAkB,CAChB,qBAAAS,EAAuB,GACvB,qBAAAC,EAAuB,EACxB,EAAG,GAAI,CAEN,OAAO,KAAK,WAAW,eAAe,eAAe,iBAAkB,CACrE,UAAW,KAAK,WAChB,qBAAsBD,IAAyB,GAC/C,qBAAsBC,IAAyB,EACrD,EAAO,CACD,cAAe,IACf,KAAKC,EAAa,CAChB,OAAOA,EAAY,MAAM,MAC1B,CACP,CAAK,CACF,CACD,eAAeloE,EAAS,GAAI,CAC1B,GAAI,KAAK,WAAW,YAClB,OAAO,KAAK,OAAM,EAAG,KAAKyjE,GAAOD,GAAQ,YAAYC,CAAG,CAAC,EAE3D,MAAMpE,EAAiB,KAAK,kBAAkBr/D,CAAM,EACpD,OAAO,IAAI,QAAQ,SAAUmW,EAASC,EAAQ,CAC5C,SAAS+qD,GAAO,CACdznE,EAAO,OAAO,KAAK,SAAU,CAC3B,MAAAoJ,EACA,KAAA+6D,CACV,EAAW,CACD,GAAIA,EAAM,CACR1nD,EAAQ+xD,CAAW,EACnB,MACD,CACDA,EAAY,OAAZA,EAAY,KAASplE,EAAM,MAC3B,OAAO,OAAOolE,EAAY,OAAQplE,EAAM,MAAM,EAC9ColE,EAAY,MAAM,KAAK,GAAGplE,EAAM,KAAK,EACrCq+D,GACD,EAAE/qD,CAAM,CACV,CACD,MAAM1c,EAAS2lE,EAAe,YACxB6I,EAAc,CAClB,MAAO,CAAE,EACT,OAAQ,OAAO,OAAO,IAAI,EAC1B,KAAM,IACd,EACM/G,GACN,CAAK,CACF,CACD,eAAgB,CACd,OAAO,KAAK,WAAW,cAAc,KAAK,UAAU,CACrD,CACD,UAAW,CACT,KAAK,UAAY,GACjB,MAAMgH,EAAS,GACf,UAAWZ,KAAe,KAAK,cAAc,OAAM,EAMjD,GALA,KAAK,mBAAmB,CACtB,YAAAA,EACA,OAAQ,IAAI,MAAM,qBAAqB,EACvC,MAAO,EACf,CAAO,EACG,CAAAA,EAAY,qBAGhB,UAAWG,KAAsBH,EAAY,YAC3CY,EAAO,KAAKT,EAAmB,SAAS,EACxCA,EAAmB,OAAM,EAG7B,YAAK,KAAK,QACV7yC,EAAA,KAAKmyC,GAAkB,IAChB,QAAQ,IAAImB,CAAM,CAC1B,CACD,QAAQC,EAAa,GAAO,CAC1BvzC,EAAA,KAAKmyC,GAAkB,IACvB,MAAMqB,EAAUt3C,EAAA,KAAKg2C,GAAAY,IAAL,WAChB,OAAIS,GAAcC,GAChB,KAAK,SAAL,KAAK,OAAW,IAAIh0C,IAEfg0C,CACR,CAkBD,iBAAiBna,EAAc2B,EAAU,SACvC,MAAM0X,EAAc,KAAK,cAAc,IAAI1X,CAAQ,EAC9C0X,KAGLz4C,EAAA,KAAK,SAAL,MAAAA,EAAa,QAAQ,iBACrBD,EAAA04C,EAAY,yBAAZ,MAAA14C,EAAoC,QAAQq/B,GAC7C,CACD,iBAAiBoa,EAAmBf,EAAa,CAC/C,QAAS,EAAI,EAAGxzC,EAAKu0C,EAAkB,OAAQ,EAAIv0C,EAAI,IACrDwzC,EAAY,aAAa,QAAQ,KAAKe,EAAkB,QAAQ,CAAC,CAAC,EAClEf,EAAY,aAAa,UAAU,KAAKe,EAAkB,UAAU,CAAC,CAAC,EAExEf,EAAY,aAAa,UAAYe,EAAkB,UACvDf,EAAY,aAAa,eAAiBe,EAAkB,eAC5D,UAAWZ,KAAsBH,EAAY,YAC3CG,EAAmB,oBAAmB,EAEpCY,EAAkB,WACpBv3C,EAAA,KAAKg2C,GAAAY,IAAL,UAEH,CACD,kBAAkB,CAChB,gBAAAhP,EACA,SAAA9I,EACA,8BAAA0Y,EACA,YAAAC,CACJ,EAAK,CACD,KAAM,CACJ,IAAAx5D,EACA,SAAAgoC,CACD,EAAGuxB,EAQE7uE,EAPiB,KAAK,WAAW,eAAe,eAAe,kBAAmB,CACtF,UAAW,KAAK,WAChB,OAAQi/D,EACR,SAAA9I,EACA,kBAAmB7gD,EACnB,YAAAw5D,CACD,EAAExxB,CAAQ,EACmB,YACxBuwB,EAAc,KAAK,cAAc,IAAI1X,CAAQ,EACnD0X,EAAY,aAAe7tE,EAC3B,MAAMynE,EAAO,IAAM,CACjBznE,EAAO,OAAO,KAAK,CAAC,CAClB,MAAAoJ,EACA,KAAA+6D,CACR,IAAY,CACJ,GAAIA,EAAM,CACR0J,EAAY,aAAe,KAC3B,MACD,CACG,KAAK,WAAW,YAGpB,KAAK,iBAAiBzkE,EAAOykE,CAAW,EACxCpG,IACD,EAAEjkD,GAAU,CAEX,GADAqqD,EAAY,aAAe,KACvB,MAAK,WAAW,UAGpB,IAAIA,EAAY,aAAc,CAC5BA,EAAY,aAAa,UAAY,GACrC,UAAWG,KAAsBH,EAAY,YAC3CG,EAAmB,oBAAmB,EAExC32C,EAAA,KAAKg2C,GAAAY,IAAL,UACD,CACD,GAAIJ,EAAY,uBACdA,EAAY,uBAAuB,OAAOrqD,CAAM,UACvCqqD,EAAY,qBACrBA,EAAY,qBAAqB,OAAOrqD,CAAM,MAE9C,OAAMA,EAEhB,CAAO,CACP,EACIikD,GACD,CACD,mBAAmB,CACjB,YAAAoG,EACA,OAAArqD,EACA,MAAAurD,EAAQ,EACZ,EAAK,CACD,GAAKlB,EAAY,aAOjB,IAJIA,EAAY,4BACd,aAAaA,EAAY,yBAAyB,EAClDA,EAAY,0BAA4B,MAEtC,CAACkB,EAAO,CACV,GAAIlB,EAAY,YAAY,KAAO,EACjC,OAEF,GAAIrqD,aAAkB0N,GAA6B,CACjD,IAAIxd,EAAQ02D,GACR5mD,EAAO,WAAa,GAAKA,EAAO,WAAa,MAC/C9P,GAAS8P,EAAO,YAElBqqD,EAAY,0BAA4B,WAAW,IAAM,CACvDA,EAAY,0BAA4B,KACxC,KAAK,mBAAmB,CACtB,YAAAA,EACA,OAAArqD,EACA,MAAO,EACnB,CAAW,CACF,EAAE9P,CAAK,EACR,MACD,CACF,CAGD,GAFAm6D,EAAY,aAAa,OAAO,IAAIn+C,GAAelM,EAAO,OAAO,CAAC,EAAE,MAAM,IAAM,EAAE,EAClFqqD,EAAY,aAAe,KACvB,MAAK,WAAW,UAGpB,UAAW,CAACmB,EAAaC,CAAc,IAAK,KAAK,cAC/C,GAAIA,IAAmBpB,EAAa,CAClC,KAAK,cAAc,OAAOmB,CAAW,EACrC,KACD,CAEH,KAAK,QAAO,GACb,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,MACb,CACH,CAxaE1B,GAAA,YAwRAD,GAAA,YAAAY,GAAW,UAAG,CACZ,GAAI,CAAChzC,EAAA,KAAKqyC,KAAmB,KAAK,UAChC,MAAO,GAET,SAAW,CACT,YAAA4B,EACA,aAAA9iB,CACN,IAAS,KAAK,cAAc,SACtB,GAAI8iB,EAAY,KAAO,GAAK,CAAC9iB,EAAa,UACxC,MAAO,GAGX,YAAK,cAAc,QACnB,KAAK,KAAK,QACVjxB,EAAA,KAAKmyC,GAAkB,IAChB,EACR,YAiIH,MAAM6B,EAAa,CAAnB,cACEn3C,EAAA,KAAAo3C,GAAa,IAAI,KACjBp3C,EAAA,KAAAq3C,GAAY,QAAQ,WACpB,YAAY7/C,EAAK8tB,EAAU,CACzB,MAAMp9C,EAAQ,CACZ,KAAM,gBAAgBsvB,EAAK8tB,EAAW,CACpC,SAAAA,CACD,EAAG,IAAI,CACd,EACIriB,EAAA,KAAKo0C,IAAU,KAAK,IAAM,CACxB,SAAW,CAAC/zD,CAAQ,IAAK2f,EAAA,KAAKm0C,IAC5B9zD,EAAS,KAAK,KAAMpb,CAAK,CAEjC,CAAK,CACF,CACD,iBAAiBiN,EAAMmO,EAAU9K,EAAU,KAAM,CAC/C,IAAI8+D,EAAU,KACd,IAAI9+D,GAAA,YAAAA,EAAS,kBAAkB,YAAa,CAC1C,KAAM,CACJ,OAAA+tB,CACD,EAAG/tB,EACJ,GAAI+tB,EAAO,QAAS,CAClBjL,GAAK,gDAAgD,EACrD,MACD,CACD,MAAMi8C,EAAU,IAAM,KAAK,oBAAoBpiE,EAAMmO,CAAQ,EAC7Dg0D,EAAU,IAAM/wC,EAAO,oBAAoB,QAASgxC,CAAO,EAC3DhxC,EAAO,iBAAiB,QAASgxC,CAAO,CACzC,CACDt0C,EAAA,KAAKm0C,IAAW,IAAI9zD,EAAUg0D,CAAO,CACtC,CACD,oBAAoBniE,EAAMmO,EAAU,CAClC,MAAMg0D,EAAUr0C,EAAA,KAAKm0C,IAAW,IAAI9zD,CAAQ,EAC5Cg0D,GAAA,MAAAA,IACAr0C,EAAA,KAAKm0C,IAAW,OAAO9zD,CAAQ,CAChC,CACD,WAAY,CACV,SAAW,CAAG,CAAAg0D,CAAO,IAAKr0C,EAAA,KAAKm0C,IAC7BE,GAAA,MAAAA,IAEFr0C,EAAA,KAAKm0C,IAAW,OACjB,CACH,CAzCEA,GAAA,YACAC,GAAA,qCAyCF,MAAMG,GAAN,MAAMA,EAAU,CAwBd,YAAY,CACV,KAAAriE,EAAO,KACP,KAAAsiE,EAAO,KACP,UAAAt8C,EAAYE,GAAmB,CAChC,EAAG,GAAI,CAqBR2E,EAAA,KAAA03C,UAbE,GAPA,KAAK,KAAOviE,EACZ,KAAK,UAAY,GACjB,KAAK,UAAYgmB,EACjB,KAAK,iBAAmB,QAAQ,gBAChC,KAAK,MAAQ,KACb,KAAK,WAAa,KAClB,KAAK,gBAAkB,KACnBs8C,EAAM,CACR,IAAIr6C,EAAA6F,EAAAu0C,GAAUG,MAAV,MAAAv6C,EAAwB,IAAIq6C,GAC9B,MAAM,IAAI,MAAM,8CAA8C,GAE/Dx0C,EAAAu0C,GAAUG,KAAVx0C,EAAAq0C,GAAUG,GAAiB,IAAI,UAAW,IAAIF,EAAM,IAAI,EACzD,KAAK,oBAAoBA,CAAI,EAC7B,MACD,CACD,KAAK,YAAW,CACjB,CACD,IAAI,SAAU,CACZ,OAAO,KAAK,iBAAiB,OAC9B,CAOD,IAAI,MAAO,CACT,OAAO,KAAK,KACb,CACD,IAAI,gBAAiB,CACnB,OAAO,KAAK,eACb,CACD,oBAAoBA,EAAM,CACxB,KAAK,MAAQA,EACb,KAAK,gBAAkB,IAAIvnE,GAAe,OAAQ,SAAUunE,CAAI,EAChE,KAAK,gBAAgB,GAAG,QAAS,UAAY,CAAE,GAC/Cp4C,EAAA,KAAKq4C,GAAAE,IAAL,UACD,CACD,aAAc,CACZ,GAAI30C,EAAAu0C,GAAUK,KAAqB50C,EAAAu0C,GAAUM,GAAAC,IAAiC,CAC5E,KAAK,iBAAgB,EACrB,MACD,CACD,GAAI,CACF,UAAAC,CACD,EAAGR,GACJ,GAAI,CACGA,GAAU,cAAc,OAAO,SAAUQ,CAAS,IACrDA,EAAYR,GAAU,kBAAkB,IAAI,IAAIQ,EAAW,OAAO,QAAQ,EAAE,IAAI,GAElF,MAAMrF,EAAS,IAAI,OAAOqF,EAAW,CACnC,KAAM,QACd,CAAO,EACKhnE,EAAiB,IAAId,GAAe,OAAQ,SAAUyiE,CAAM,EAC5DsF,EAAiB,IAAM,CAC3B3mC,EAAG,MAAK,EACRtgC,EAAe,QAAO,EACtB2hE,EAAO,UAAS,EACZ,KAAK,UACP,KAAK,iBAAiB,OAAO,IAAI,MAAM,sBAAsB,CAAC,EAE9D,KAAK,iBAAgB,CAE/B,EACYrhC,EAAK,IAAI,gBACfqhC,EAAO,iBAAiB,QAAS,IAAM,CAChC,KAAK,YACRsF,GAEV,EAAS,CACD,OAAQ3mC,EAAG,MACnB,CAAO,EACDtgC,EAAe,GAAG,OAAQ/K,GAAQ,CAEhC,GADAqrC,EAAG,MAAK,EACJ,KAAK,WAAa,CAACrrC,EAAM,CAC3BgyE,IACA,MACD,CACD,KAAK,gBAAkBjnE,EACvB,KAAK,MAAQ2hE,EACb,KAAK,WAAaA,EAClBtzC,EAAA,KAAKq4C,GAAAE,IAAL,UACR,CAAO,EACD5mE,EAAe,GAAG,QAAS/K,GAAQ,CAEjC,GADAqrC,EAAG,MAAK,EACJ,KAAK,UAAW,CAClB2mC,IACA,MACD,CACD,GAAI,CACFC,GACV,MAAgB,CACN,KAAK,iBAAgB,CACtB,CACT,CAAO,EACD,MAAMA,EAAW,IAAM,CACrB,MAAMC,EAAU,IAAI,WACpBnnE,EAAe,KAAK,OAAQmnE,EAAS,CAACA,EAAQ,MAAM,CAAC,CAC7D,EACMD,IACA,MACN,MAAY,CACNzwD,GAAK,+BAA+B,CACrC,CACD,KAAK,iBAAgB,CACtB,CACD,kBAAmB,CACZwb,EAAAu0C,GAAUK,MACbv8C,GAAK,yBAAyB,EAC9B6H,EAAAq0C,GAAUK,GAAoB,KAEhCL,GAAU,uBAAuB,KAAKY,GAAwB,CAC5D,GAAI,KAAK,UAAW,CAClB,KAAK,iBAAiB,OAAO,IAAI,MAAM,sBAAsB,CAAC,EAC9D,MACD,CACD,MAAMX,EAAO,IAAIN,GACjB,KAAK,MAAQM,EACb,MAAMz/D,EAAK,OAAO2wB,GAAA6uC,GAAUa,IAAV,GAAyB,GACrCC,EAAgB,IAAIpoE,GAAe8H,EAAK,UAAWA,EAAIy/D,CAAI,EACjEW,EAAqB,MAAME,EAAeb,CAAI,EAC9C,KAAK,gBAAkB,IAAIvnE,GAAe8H,EAAIA,EAAK,UAAWy/D,CAAI,EAClEp4C,EAAA,KAAKq4C,GAAAE,IAAL,UACN,CAAK,EAAE,MAAMpsD,GAAU,CACjB,KAAK,iBAAiB,OAAO,IAAI,MAAM,mCAAmCA,EAAO,OAAO,IAAI,CAAC,CACnG,CAAK,CACF,CACD,SAAU,WACR,KAAK,UAAY,IACjB4R,EAAA,KAAK,aAAL,MAAAA,EAAiB,YACjB,KAAK,WAAa,MAClBD,EAAA8F,EAAAu0C,GAAUG,MAAV,MAAAx6C,EAAwB,OAAO,KAAK,OACpC,KAAK,MAAQ,MACb6T,EAAA,KAAK,kBAAL,MAAAA,EAAsB,UACtB,KAAK,gBAAkB,IACxB,CACD,OAAO,SAAS1iC,EAAQ,OACtB,GAAI,EAACA,GAAA,MAAAA,EAAQ,MACX,MAAM,IAAI,MAAM,gDAAgD,EAElE,MAAMiqE,GAAan7C,EAAA6F,EAAA,KAAK00C,MAAL,YAAAv6C,EAAmB,IAAI9uB,EAAO,MACjD,GAAIiqE,EAAY,CACd,GAAIA,EAAW,gBACb,MAAM,IAAI,MAAM,yHAA8H,EAEhJ,OAAOA,CACR,CACD,OAAO,IAAIf,GAAUlpE,CAAM,CAC5B,CACD,WAAW,WAAY,CACrB,GAAIgqB,GAAoB,UACtB,OAAOA,GAAoB,UAE7B,MAAM,IAAI,MAAM,+CAA+C,CAChE,CAQD,WAAW,wBAAyB,CAQlC,OAAOkC,GAAO,KAAM,0BAPL,SACTyI,EAAA,KAAK60C,GAAAC,IACA90C,EAAA,KAAK60C,GAAAC,KAEC,MAAKS,GAAA,IAAC,OAA8B,KAAK,WAAS,KACnD,sBAEsC,EACvD,CACH,EAxMSH,GAAA,YACAR,GAAA,YACAF,GAAA,YA8CPD,GAAA,YAAAE,GAAQ,UAAG,CACT,KAAK,iBAAiB,UACtB,KAAK,gBAAgB,KAAK,YAAa,CACrC,UAAW,KAAK,SACtB,CAAK,CACF,EAkIUE,GAAA,YAAAC,GAA+B,UAAG,OAC3C,GAAI,CACF,QAAO36C,EAAA,WAAW,cAAX,YAAAA,EAAwB,uBAAwB,IAC7D,MAAY,CACN,OAAO,IACR,CACF,EAND4C,EAxLIw3C,GAwLOM,IAvLX93C,EADIw3C,GACGa,GAAgB,GACvBr4C,EAFIw3C,GAEGK,GAAoB,IAC3B73C,EAHIw3C,GAGGG,GAAP,QAEMh9C,KACFwI,EAAAq0C,GAAKK,GAAoB,IACzBv/C,GAAoB,YAApBA,GAAoB,UAAc,qBAEpCk/C,GAAK,cAAgB,CAAC77C,EAAS88C,IAAa,CAC1C,MAAMC,EAAO,IAAI,MAAM/8C,CAAO,EAC9B,GAAI,EAAC+8C,GAAA,MAAAA,EAAM,SAAUA,EAAK,SAAW,OACnC,MAAO,GAET,MAAMC,EAAQ,IAAI,IAAIF,EAAUC,CAAI,EACpC,OAAOA,EAAK,SAAWC,EAAM,MACnC,EACInB,GAAK,kBAAoB1xE,GAAO,CAC9B,MAAM8yE,EAAU,iBAAiB9yE,CAAG,MACpC,OAAO,IAAI,gBAAgB,IAAI,KAAK,CAAC8yE,CAAO,EAAG,CAC7C,KAAM,iBACP,EAAC,CACR,EAtBA,IAAM9/C,GAAN0+C,4BA0MA,MAAM5C,EAAgB,CAMpB,YAAY5jE,EAAgB6nE,EAAapE,EAAenmE,EAAQsG,EAAS,CAuBzEorB,EAAA,KAAA84C,IA5BA94C,EAAA,KAAA+4C,GAAkB,IAAI,KACtB/4C,EAAA,KAAAg5C,GAAa,IAAI,KACjBh5C,EAAA,KAAAi5C,GAAgB,IAAI,KACpBj5C,EAAA,KAAAk5C,GAAgB,IAAI,KACpBl5C,EAAA,KAAAm5C,GAAsB,MAEpB,KAAK,eAAiBnoE,EACtB,KAAK,YAAc6nE,EACnB,KAAK,WAAa,IAAItD,GACtB,KAAK,WAAa,IAAIvvB,GAAW,CAC/B,cAAe13C,EAAO,cACtB,aAAcA,EAAO,YAC3B,CAAK,EACD,KAAK,cAAgBA,EAAO,cAC5B,KAAK,QAAUA,EACf,KAAK,cAAgBsG,EAAQ,cAC7B,KAAK,cAAgBA,EAAQ,cAC7B,KAAK,kBAAoBA,EAAQ,kBACjC,KAAK,wBAA0BA,EAAQ,wBACvC,KAAK,YAAcA,EAAQ,YAC3B,KAAK,UAAY,GACjB,KAAK,kBAAoB,KACzB,KAAK,eAAiB6/D,EACtB,KAAK,YAAc,KACnB,KAAK,cAAgB,KACrB,KAAK,uBAAyB,QAAQ,gBACtC,KAAK,oBAAmB,CACzB,CAUD,IAAI,mBAAoB,CACtB,OAAOj6C,GAAO,KAAM,oBAAqB,IAAIkqB,EAAmB,CACjE,CACD,mBAAmBwa,EAAQuW,EAAiBz9C,GAAe,OAAQ29C,EAAyB,KAAMriC,EAAY,GAAO8lC,EAAW,GAAO,CACrI,IAAInS,EAAkBlsC,GAAoB,QACtC87C,EAAgCpyB,GACpC,OAAQya,EAAM,CACZ,IAAK,MACH+H,EAAkBlsC,GAAoB,IACtC,MACF,IAAK,UACH,MACF,IAAK,QACHksC,EAAkBlsC,GAAoB,MACtC,MACF,QACEO,GAAK,wCAAwC4jC,CAAM,EAAE,CACxD,CACD,MAAMma,EAAoBpS,EAAkBlsC,GAAoB,OAAS46C,aAAkCvwB,GAAyBuwB,EAAyB,KAAK,kBAClK,OAAQF,EAAc,CACpB,KAAKz9C,GAAe,QAClBivC,GAAmBlsC,GAAoB,oBACvC,MACF,KAAK/C,GAAe,OAClB,MACF,KAAKA,GAAe,aAClBivC,GAAmBlsC,GAAoB,kBACvC,MACF,KAAK/C,GAAe,eAClBivC,GAAmBlsC,GAAoB,oBACvC87C,EAAgCwC,EAAkB,aAClD,MACF,QACE/9C,GAAK,gDAAgDm6C,CAAc,EAAE,CACxE,CACGniC,IACF2zB,GAAmBlsC,GAAoB,YAErCq+C,IACFnS,GAAmBlsC,GAAoB,QAEzC,KAAM,CACJ,IAAK+7C,EACL,KAAMwC,CACZ,EAAQD,EAAkB,YAChBE,EAAc,CAACtS,EAAiB4P,EAA8B,KAAMyC,CAAe,EACzF,MAAO,CACL,gBAAArS,EACA,SAAUsS,EAAY,KAAK,GAAG,EAC9B,8BAAA1C,EACA,YAAAC,CACN,CACG,CACD,SAAU,OACR,GAAI,KAAK,kBACP,OAAO,KAAK,kBAAkB,QAEhC,KAAK,UAAY,GACjB,KAAK,kBAAoB,QAAQ,iBACjC15C,EAAA6F,EAAA,KAAKk2C,MAAL,MAAA/7C,EAA0B,OAAO,IAAI,MAAM,iDAAiD,GAC5F,MAAMq5C,EAAS,GACf,UAAWroE,KAAQ60B,EAAA,KAAK+1C,IAAW,OAAM,EACvCvC,EAAO,KAAKroE,EAAK,SAAU,GAE7B60B,EAAA,KAAK+1C,IAAW,QAChB/1C,EAAA,KAAKg2C,IAAc,QACnBh2C,EAAA,KAAKi2C,IAAc,QACf,KAAK,eAAe,mBAAmB,GACzC,KAAK,kBAAkB,gBAEzB,MAAMM,EAAa,KAAK,eAAe,gBAAgB,YAAa,IAAI,EACxE,OAAA/C,EAAO,KAAK+C,CAAU,EACtB,QAAQ,IAAI/C,CAAM,EAAE,KAAK,IAAM,SAC7B,KAAK,WAAW,QAChB,KAAK,WAAW,QAChBxzC,EAAA,KAAK81C,IAAgB,QACrB,KAAK,cAAc,UACnBz/C,GAAU,QAAO,GACjB8D,EAAA,KAAK,iBAAL,MAAAA,EAAqB,kBAAkB,IAAI1F,GAAe,wBAAwB,IAClFyF,EAAA,KAAK,iBAAL,MAAAA,EAAqB,UACrB,KAAK,eAAiB,KACtB,KAAK,kBAAkB,SAC7B,EAAO,KAAK,kBAAkB,MAAM,EACzB,KAAK,kBAAkB,OAC/B,CACD,qBAAsB,CACpB,KAAM,CACJ,eAAAnsB,EACA,YAAA6nE,CACD,EAAG,KACJ7nE,EAAe,GAAG,YAAa,CAAC/K,EAAMwzE,IAAS,CAC7Cj+C,GAAO,KAAK,eAAgB,iDAAiD,EAC7E,KAAK,YAAc,KAAK,eAAe,cAAa,EACpD,KAAK,YAAY,WAAa4U,GAAO,CACnC,KAAK,cAAgB,CACnB,OAAQA,EAAI,OACZ,MAAOA,EAAI,KACrB,CACA,EACMqpC,EAAK,OAAS,IAAM,CAClB,KAAK,YAAY,KAAM,EAAC,KAAK,SAAU,CACrC,MAAAroE,EACA,KAAA+6D,CACV,EAAW,CACD,GAAIA,EAAM,CACRsN,EAAK,MAAK,EACV,MACD,CACDj+C,GAAOpqB,aAAiB,YAAa,sCAAsC,EAC3EqoE,EAAK,QAAQ,IAAI,WAAWroE,CAAK,EAAG,EAAG,CAACA,CAAK,CAAC,CACxD,CAAS,EAAE,MAAMoa,GAAU,CACjBiuD,EAAK,MAAMjuD,CAAM,CAC3B,CAAS,CACT,EACMiuD,EAAK,SAAWjuD,GAAU,CACxB,KAAK,YAAY,OAAOA,CAAM,EAC9BiuD,EAAK,MAAM,MAAMC,GAAe,CAC9B,GAAI,MAAK,UAGT,MAAMA,CAChB,CAAS,CACT,CACA,CAAK,EACD1oE,EAAe,GAAG,qBAAsB,MAAM/K,GAAQ,OACpD,MAAM,KAAK,YAAY,aACvB,KAAM,CACJ,qBAAA0zE,EACA,iBAAAC,EACA,cAAAC,CACR,EAAU,KAAK,YACT,OAAI,CAACF,GAAwB,CAACC,KACxB,KAAK,iBACPx8C,EAAAy7C,EAAY,aAAZ,MAAAz7C,EAAA,KAAAy7C,EAAyB,KAAK,gBAEhC,KAAK,YAAY,WAAazoC,GAAO,QACnChT,EAAAy7C,EAAY,aAAZ,MAAAz7C,EAAA,KAAAy7C,EAAyB,CACvB,OAAQzoC,EAAI,OACZ,MAAOA,EAAI,KACvB,EACA,GAEa,CACL,qBAAAupC,EACA,iBAAAC,EACA,cAAAC,CACR,CACA,CAAK,EACD7oE,EAAe,GAAG,iBAAkB,CAAC/K,EAAMwzE,IAAS,CAClDj+C,GAAO,KAAK,eAAgB,sDAAsD,EAClF,MAAMytC,EAAc,KAAK,eAAe,eAAehjE,EAAK,MAAOA,EAAK,GAAG,EAC3E,GAAI,CAACgjE,EAAa,CAChBwQ,EAAK,MAAK,EACV,MACD,CACDA,EAAK,OAAS,IAAM,CAClBxQ,EAAY,OAAO,KAAK,SAAU,CAChC,MAAA73D,EACA,KAAA+6D,CACV,EAAW,CACD,GAAIA,EAAM,CACRsN,EAAK,MAAK,EACV,MACD,CACDj+C,GAAOpqB,aAAiB,YAAa,2CAA2C,EAChFqoE,EAAK,QAAQ,IAAI,WAAWroE,CAAK,EAAG,EAAG,CAACA,CAAK,CAAC,CACxD,CAAS,EAAE,MAAMoa,GAAU,CACjBiuD,EAAK,MAAMjuD,CAAM,CAC3B,CAAS,CACT,EACMiuD,EAAK,SAAWjuD,GAAU,CACxBy9C,EAAY,OAAOz9C,CAAM,EACzBiuD,EAAK,MAAM,MAAMC,GAAe,CAC9B,GAAI,MAAK,UAGT,MAAMA,CAChB,CAAS,CACT,CACA,CAAK,EACD1oE,EAAe,GAAG,SAAU,CAAC,CAC3B,QAAAikE,CACN,IAAU,CACJ,KAAK,UAAYA,EAAQ,SACzB,KAAK,YAAcA,EAAQ,WAC3B,OAAOA,EAAQ,WACf4D,EAAY,YAAY,QAAQ,IAAI7D,GAAiBC,EAAS,IAAI,CAAC,CACzE,CAAK,EACDjkE,EAAe,GAAG,eAAgBiiC,GAAM,CACtC4lC,EAAY,YAAY,OAAOrwB,GAAWvV,CAAE,CAAC,CACnD,CAAK,EACDjiC,EAAe,GAAG,kBAAmBiiC,GAAM,CACzC9P,EAAA,KAAKg2C,GAAsB,QAAQ,iBACnC,GAAI,CACF,GAAI,CAACN,EAAY,WACf,MAAMrwB,GAAWvV,CAAE,EAErB,MAAM6mC,EAAiBrH,GAAY,CAC7BA,aAAoB,MACtBxvC,EAAA,KAAKk2C,IAAoB,OAAO1G,CAAQ,EAExCxvC,EAAA,KAAKk2C,IAAoB,QAAQ,CAC/B,SAAA1G,CACd,CAAa,CAEb,EACQoG,EAAY,WAAWiB,EAAgB7mC,EAAG,IAAI,CAC/C,OAAQljB,EAAK,CACZkT,EAAA,KAAKk2C,IAAoB,OAAOppD,CAAG,CACpC,CACD,OAAOkT,EAAA,KAAKk2C,IAAoB,OACtC,CAAK,EACDnoE,EAAe,GAAG,aAAc/K,GAAQ,QACtCm3B,EAAAy7C,EAAY,aAAZ,MAAAz7C,EAAA,KAAAy7C,EAAyB,CACvB,OAAQ5yE,EAAK,OACb,MAAOA,EAAK,MACpB,GACM,KAAK,uBAAuB,QAAQA,CAAI,CAC9C,CAAK,EACD+K,EAAe,GAAG,kBAAmB/K,GAAQ,CAC3C,GAAI,KAAK,UACP,OAEWg9B,EAAA,KAAK+1C,IAAW,IAAI/yE,EAAK,SAAS,EAC1C,iBAAiBA,EAAK,aAAcA,EAAK,QAAQ,CAC5D,CAAK,EACD+K,EAAe,GAAG,YAAa,CAAC,CAACgH,EAAInF,EAAMknE,CAAY,IAAM,OAI3D,GAHI,KAAK,WAGL,KAAK,WAAW,IAAI/hE,CAAE,EACxB,OAAO,KAET,OAAQnF,EAAI,CACV,IAAK,OACH,GAAI,UAAWknE,EAAc,CAC3B,MAAMC,EAAgBD,EAAa,MACnCz+C,GAAK,8BAA8B0+C,CAAa,EAAE,EAClD,KAAK,WAAW,QAAQhiE,EAAIgiE,CAAa,EACzC,KACD,CACD,MAAMjyB,EAAc,KAAK,QAAQ,UAAU3qB,EAAA,WAAW,gBAAX,MAAAA,EAA0B,SAAU,CAACupB,EAAM7gD,IAAQ,WAAW,cAAc,UAAU6gD,EAAM7gD,CAAG,EAAI,KACxI6gD,EAAO,IAAIkB,GAAekyB,EAAchyB,CAAW,EACzD,KAAK,WAAW,KAAKpB,CAAI,EAAE,MAAM,IAAM31C,EAAe,gBAAgB,eAAgB,CACpF,GAAAgH,CACZ,CAAW,CAAC,EAAE,QAAQ,IAAM,CACZ,CAAC2uC,EAAK,qBAAuBA,EAAK,OACpCA,EAAK,KAAO,MAEd,KAAK,WAAW,QAAQ3uC,EAAI2uC,CAAI,CAC5C,CAAW,EACD,MACF,IAAK,iBACH,KAAM,CACJ,SAAAszB,CACD,EAAGF,EACJv+C,GAAOy+C,EAAU,+BAA+B,EAChD,UAAWC,KAAaj3C,EAAA,KAAK+1C,IAAW,OAAM,EAC5C,SAAW,CAAG,CAAA/yE,CAAI,IAAKi0E,EAAU,KAC/B,IAAIj0E,GAAA,YAAAA,EAAM,OAAQg0E,EAGlB,OAAKh0E,EAAK,SAGV,KAAK,WAAW,QAAQ+R,EAAI,gBAAgB/R,CAAI,CAAC,EAC1CA,EAAK,SAHH,KAMb,MACF,IAAK,WACL,IAAK,QACL,IAAK,UACH,KAAK,WAAW,QAAQ+R,EAAI+hE,CAAY,EACxC,MACF,QACE,MAAM,IAAI,MAAM,kCAAkClnE,CAAI,EAAE,CAC3D,CACD,OAAO,IACb,CAAK,EACD7B,EAAe,GAAG,MAAO,CAAC,CAACgH,EAAI67B,EAAWhhC,EAAMsnE,CAAS,IAAM,OAC7D,GAAI,KAAK,UACP,OAEF,MAAMD,EAAYj3C,EAAA,KAAK+1C,IAAW,IAAInlC,CAAS,EAC/C,GAAI,CAAAqmC,EAAU,KAAK,IAAIliE,CAAE,EAGzB,IAAIkiE,EAAU,cAAc,OAAS,EAAG,EACtC98C,EAAA+8C,GAAA,YAAAA,EAAW,SAAX,MAAA/8C,EAAmB,QACnB,MACD,CACD,OAAQvqB,EAAI,CACV,IAAK,QACL,IAAK,UACHqnE,EAAU,KAAK,QAAQliE,EAAImiE,CAAS,EACpC,MACF,QACE,MAAM,IAAI,MAAM,2BAA2BtnE,CAAI,EAAE,CACpD,EACP,CAAK,EACD7B,EAAe,GAAG,cAAe/K,GAAQ,OACnC,KAAK,YAGTm3B,EAAAy7C,EAAY,aAAZ,MAAAz7C,EAAA,KAAAy7C,EAAyB,CACvB,OAAQ5yE,EAAK,OACb,MAAOA,EAAK,KACpB,EACA,CAAK,EACD+K,EAAe,GAAG,kBAAmB,MAAM/K,GAAQ,CACjD,GAAI,KAAK,UACP,MAAM,IAAI,MAAM,uBAAuB,EAEzC,MAAM2O,EAAU,KAAK3O,EAAK,IAAI,EAC9B,GAAI,CAAC2O,EACH,MAAM,IAAI,MAAM,GAAG3O,EAAK,IAAI,yDAAyD,EAEvF,OAAO2O,EAAQ,MAAM3O,CAAI,CAC/B,CAAK,CACF,CACD,SAAU,CACR,OAAO,KAAK,eAAe,gBAAgB,UAAW,IAAI,CAC3D,CACD,cAAe,OACT,KAAK,kBAAkB,MAAQ,GACjCq1B,GAAK,gGAAqG,EAE5G,KAAM,CACJ,IAAAhe,EACA,SAAAgoC,CACN,EAAQ,KAAK,kBAAkB,aAC3B,OAAO,KAAK,eAAe,gBAAgB,eAAgB,CACzD,UAAW,CAAC,CAAC,KAAK,YAClB,SAAU,KAAK,UACf,kBAAmBhoC,EACnB,WAAU8f,EAAA,KAAK,cAAL,YAAAA,EAAkB,WAAY,IAC9C,EAAOkoB,CAAQ,EAAE,QAAQ,IAAM,CACzB,KAAK,kBAAkB,eAC7B,CAAK,CACF,CACD,QAAQ7T,EAAY,CAClB,GAAI,CAAC,OAAO,UAAUA,CAAU,GAAKA,GAAc,GAAKA,EAAa,KAAK,UACxE,OAAO,QAAQ,OAAO,IAAI,MAAM,uBAAuB,CAAC,EAE1D,MAAMoC,EAAYpC,EAAa,EAC7B2oC,EAAgBn3C,EAAA,KAAKg2C,IAAc,IAAIplC,CAAS,EAClD,GAAIumC,EACF,OAAOA,EAET,MAAMlqD,EAAU,KAAK,eAAe,gBAAgB,UAAW,CAC7D,UAAA2jB,CACN,CAAK,EAAE,KAAKuhC,GAAY,CAClB,GAAI,KAAK,UACP,MAAM,IAAI,MAAM,qBAAqB,EAEnCA,EAAS,QACXnyC,EAAA,KAAKi2C,IAAc,IAAI9D,EAAS,OAAQ3jC,CAAU,EAEpD,MAAMrjC,EAAO,IAAI+mE,GAAathC,EAAWuhC,EAAU,KAAM,KAAK,QAAQ,MAAM,EAC5E,OAAAnyC,EAAA,KAAK+1C,IAAW,IAAInlC,EAAWzlC,CAAI,EAC5BA,CACb,CAAK,EACD,OAAA60B,EAAA,KAAKg2C,IAAc,IAAIplC,EAAW3jB,CAAO,EAClCA,CACR,CACD,aAAaxd,EAAK,CAChB,OAAKmiE,GAAWniE,CAAG,EAGZ,KAAK,eAAe,gBAAgB,eAAgB,CACzD,IAAKA,EAAI,IACT,IAAKA,EAAI,GACf,CAAK,EALQ,QAAQ,OAAO,IAAI,MAAM,4BAA4B,CAAC,CAMhE,CACD,eAAemhC,EAAWqrB,EAAQ,CAChC,OAAO,KAAK,eAAe,gBAAgB,iBAAkB,CAC3D,UAAArrB,EACA,OAAAqrB,CACN,CAAK,CACF,CACD,iBAAkB,CAChB,OAAO7/B,EAAA,KAAKy5C,GAAAuB,IAAL,UAAwB,kBAChC,CACD,cAAe,CACb,OAAOh7C,EAAA,KAAKy5C,GAAAuB,IAAL,UAAwB,eAChC,CACD,wBAAyB,CACvB,OAAO,KAAK,eAAe,gBAAgB,yBAA0B,IAAI,CAC1E,CACD,iBAAkB,CAChB,OAAO,KAAK,eAAe,gBAAgB,kBAAmB,IAAI,CACnE,CACD,eAAeriE,EAAI,CACjB,OAAI,OAAOA,GAAO,SACT,QAAQ,OAAO,IAAI,MAAM,8BAA8B,CAAC,EAE1D,KAAK,eAAe,gBAAgB,iBAAkB,CAC3D,GAAAA,CACN,CAAK,CACF,CACD,eAAgB,CACd,OAAO,KAAK,eAAe,gBAAgB,gBAAiB,IAAI,CACjE,CACD,eAAgB,CACd,OAAO,KAAK,eAAe,gBAAgB,gBAAiB,IAAI,CACjE,CACD,aAAc,CACZ,OAAO,KAAK,eAAe,gBAAgB,cAAe,IAAI,CAC/D,CACD,sBAAuB,CACrB,OAAO,KAAK,eAAe,gBAAgB,uBAAwB,IAAI,CACxE,CACD,eAAgB,CACd,OAAO,KAAK,eAAe,gBAAgB,gBAAiB,IAAI,CACjE,CACD,gBAAiB,CACf,OAAO,KAAK,eAAe,gBAAgB,iBAAkB,IAAI,CAClE,CACD,iBAAkB,CAChB,OAAOqnB,EAAA,KAAKy5C,GAAAuB,IAAL,UAAwB,kBAChC,CACD,iBAAiBxmC,EAAW,CAC1B,OAAO,KAAK,eAAe,gBAAgB,mBAAoB,CAC7D,UAAAA,CACN,CAAK,CACF,CACD,cAAcA,EAAW,CACvB,OAAO,KAAK,eAAe,gBAAgB,gBAAiB,CAC1D,UAAAA,CACN,CAAK,CACF,CACD,YAAa,CACX,OAAO,KAAK,eAAe,gBAAgB,aAAc,IAAI,CAC9D,CACD,yBAAyBozB,EAAiB,CACxC,OAAO5nC,EAAA,KAAKy5C,GAAAuB,IAAL,UAAwB,4BAA4B,KAAKp0E,GAAQ,IAAIyhE,GAAsBzhE,EAAMghE,CAAe,CAAC,CACzH,CACD,gBAAiB,CACf,OAAO,KAAK,eAAe,gBAAgB,iBAAkB,IAAI,CAClE,CACD,aAAc,CACZ,MAAM9xD,EAAO,cACXilE,EAAgBn3C,EAAA,KAAK81C,IAAgB,IAAI5jE,CAAI,EAC/C,GAAIilE,EACF,OAAOA,EAET,MAAMlqD,EAAU,KAAK,eAAe,gBAAgB/a,EAAM,IAAI,EAAE,KAAK9D,GAAY,gBAC/E,KAAMA,EAAQ,CAAC,EACf,SAAUA,EAAQ,CAAC,EAAI,IAAIs1D,GAASt1D,EAAQ,CAAC,CAAC,EAAI,KAClD,6BAA4B+rB,EAAA,KAAK,cAAL,YAAAA,EAAkB,WAAY,KAC1D,gBAAeD,EAAA,KAAK,cAAL,YAAAA,EAAkB,gBAAiB,IACnD,EAAC,EACF,OAAA8F,EAAA,KAAK81C,IAAgB,IAAI5jE,EAAM+a,CAAO,EAC/BA,CACR,CACD,aAAc,CACZ,OAAO,KAAK,eAAe,gBAAgB,cAAe,IAAI,CAC/D,CACD,MAAM,aAAaglD,EAAkB,GAAO,CAC1C,GAAI,MAAK,UAGT,OAAM,KAAK,eAAe,gBAAgB,UAAW,IAAI,EACzD,UAAW9mE,KAAQ60B,EAAA,KAAK+1C,IAAW,OAAM,EAEvC,GAAI,CADsB5qE,EAAK,UAE7B,MAAM,IAAI,MAAM,sBAAsBA,EAAK,UAAU,0BAA0B,EAGnF,KAAK,WAAW,QACX8mE,GACH,KAAK,WAAW,QAElBjyC,EAAA,KAAK81C,IAAgB,QACrB,KAAK,cAAc,QAAQ,EAAI,EAC/Bz/C,GAAU,QAAO,EAClB,CACD,iBAAiB5mB,EAAK,CACpB,GAAI,CAACmiE,GAAWniE,CAAG,EACjB,OAAO,KAET,MAAM4nE,EAAS5nE,EAAI,MAAQ,EAAI,GAAGA,EAAI,GAAG,IAAM,GAAGA,EAAI,GAAG,IAAIA,EAAI,GAAG,GACpE,OAAOuwB,EAAA,KAAKi2C,IAAc,IAAIoB,CAAM,GAAK,IAC1C,CACH,CA1gBEvB,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YAwBAL,GAAA,YAAAuB,GAAkB,SAACllE,EAAMlP,EAAO,KAAM,CACpC,MAAMm0E,EAAgBn3C,EAAA,KAAK81C,IAAgB,IAAI5jE,CAAI,EACnD,GAAIilE,EACF,OAAOA,EAET,MAAMlqD,EAAU,KAAK,eAAe,gBAAgB/a,EAAMlP,CAAI,EAC9D,OAAAg9B,EAAA,KAAK81C,IAAgB,IAAI5jE,EAAM+a,CAAO,EAC/BA,CACR,EAueH,MAAMqqD,GAAe,OAAO,cAAc,eAC1C,MAAMhF,EAAW,CAAjB,cAEEv1C,EAAA,KAAAw6C,IADAx6C,EAAA,KAAAy6C,GAAQ,OAAO,OAAO,IAAI,GAO1B,IAAItyB,EAAOpiD,EAAW,KAAM,CAC1B,GAAIA,EAAU,CACZ,MAAMyxB,EAAM6H,EAAA,KAAKm7C,GAAAE,IAAL,UAAgBvyB,GAC5B,OAAA3wB,EAAI,QAAQ,KAAK,IAAMzxB,EAASyxB,EAAI,IAAI,CAAC,EAClC,IACR,CACD,MAAMA,EAAMyL,EAAA,KAAKw3C,IAAMtyB,CAAK,EAC5B,GAAI,CAAC3wB,GAAOA,EAAI,OAAS+iD,GACvB,MAAM,IAAI,MAAM,6CAA6CpyB,CAAK,GAAG,EAEvE,OAAO3wB,EAAI,IACZ,CACD,IAAI2wB,EAAO,CACT,MAAM3wB,EAAMyL,EAAA,KAAKw3C,IAAMtyB,CAAK,EAC5B,MAAO,CAAC,CAAC3wB,GAAOA,EAAI,OAAS+iD,EAC9B,CACD,OAAOpyB,EAAO,CACZ,MAAM3wB,EAAMyL,EAAA,KAAKw3C,IAAMtyB,CAAK,EAC5B,MAAI,CAAC3wB,GAAOA,EAAI,OAAS+iD,GAChB,IAET,OAAOt3C,EAAA,KAAKw3C,IAAMtyB,CAAK,EAChB,GACR,CACD,QAAQA,EAAOliD,EAAO,KAAM,CAC1B,MAAMuxB,EAAM6H,EAAA,KAAKm7C,GAAAE,IAAL,UAAgBvyB,GAC5B3wB,EAAI,KAAOvxB,EACXuxB,EAAI,QAAO,CACZ,CACD,OAAQ,OACN,UAAW2wB,KAASllB,EAAA,KAAKw3C,IAAO,CAC9B,KAAM,CACJ,KAAAx0E,CACR,EAAUg9B,EAAA,KAAKw3C,IAAMtyB,CAAK,GACpB/qB,EAAAn3B,GAAA,YAAAA,EAAM,SAAN,MAAAm3B,EAAc,OACf,CACD+F,EAAA,KAAKs3C,GAAQ,OAAO,OAAO,IAAI,EAChC,CACD,EAAE,OAAO,QAAQ,GAAI,CACnB,UAAWtyB,KAASllB,EAAA,KAAKw3C,IAAO,CAC9B,KAAM,CACJ,KAAAx0E,CACR,EAAUg9B,EAAA,KAAKw3C,IAAMtyB,CAAK,EAChBliD,IAASs0E,KAGb,KAAM,CAACpyB,EAAOliD,CAAI,EACnB,CACF,CACH,CAxDEw0E,GAAA,YACAD,GAAA,YAAAE,GAAU,SAACvyB,EAAO,OAChB,OAAO/qB,EAAA6F,EAAA,KAAKw3C,KAALtyB,KAAA/qB,EAAA+qB,GAAsB,CAC3B,GAAG,QAAQ,cAAe,EAC1B,KAAMoyB,EACZ,EACG,SAmDH,MAAMI,EAAW,CAIf,YAAY3E,EAAoB,CAHhCh2C,EAAA,KAAA46C,GAAsB,MACtBpwE,GAAA,kBAAa,MACbA,GAAA,eAAU,MAER24B,EAAA,KAAKy3C,GAAsB5E,EAC5B,CACD,IAAI,SAAU,CACZ,OAAO/yC,EAAA,KAAK23C,IAAoB,WAAW,OAC5C,CACD,OAAOx4C,EAAa,EAAG,CACrBa,EAAA,KAAK23C,IAAoB,OAAO,KAAMx4C,CAAU,CACjD,CACD,IAAI,gBAAiB,CACnB,KAAM,CACJ,eAAAy4C,CACN,EAAQ53C,EAAA,KAAK23C,IAAoB,aAC7B,GAAI,CAACC,EACH,MAAO,GAET,KAAM,CACJ,oBAAA1e,CACN,EAAQl5B,EAAA,KAAK23C,IACT,OAAOC,EAAe,MAAQA,EAAe,SAAU1e,GAAA,YAAAA,EAAqB,MAAO,CACpF,CACH,CAxBEye,GAAA,sBAyBF,MAAME,GAAN,MAAMA,EAAmB,CAGvB,YAAY,CACV,SAAA/0E,EACA,OAAAuI,EACA,KAAA25C,EACA,WAAA8T,EACA,oBAAAI,EACA,aAAA/H,EACA,UAAAvgB,EACA,cAAAgkB,EACA,cAAAmE,EACA,yBAAA+e,EAA2B,GAC3B,OAAAjH,EAAS,GACT,WAAAnoC,EAAa,IACjB,EAAK,CAfH3L,EAAA,KAAAg7C,GAAO,MAgBL,KAAK,SAAWj1E,EAChB,KAAK,OAASuI,EACd,KAAK,KAAO25C,EACZ,KAAK,WAAa8T,EAClB,KAAK,oBAAsBI,EAC3B,KAAK,gBAAkB,KACvB,KAAK,aAAe/H,EACpB,KAAK,WAAavgB,EAClB,KAAK,cAAgBgkB,EACrB,KAAK,cAAgBmE,EACrB,KAAK,QAAU8X,EACf,KAAK,WAAanoC,EAClB,KAAK,QAAU,GACf,KAAK,sBAAwB,KAC7B,KAAK,cAAgB,GACrB,KAAK,0BAA4BovC,IAA6B,IAAQ,OAAO,OAAW,IACxF,KAAK,UAAY,GACjB,KAAK,WAAa,QAAQ,gBAC1B,KAAK,KAAO,IAAIJ,GAAW,IAAI,EAC/B,KAAK,aAAe,KAAK,OAAO,KAAK,IAAI,EACzC,KAAK,eAAiB,KAAK,UAAU,KAAK,IAAI,EAC9C,KAAK,mBAAqB,KAAK,cAAc,KAAK,IAAI,EACtD,KAAK,WAAa,KAAK,MAAM,KAAK,IAAI,EACtC,KAAK,QAAUrsE,EAAO,cAAc,MACrC,CACD,IAAI,WAAY,CACd,OAAO,KAAK,WAAW,QAAQ,MAAM,UAAY,CAAE,EACpD,CACD,mBAAmB,CACjB,aAAAkuD,EAAe,GACf,sBAAAP,CACJ,EAAK,SACD,GAAI,KAAK,UACP,OAEF,GAAI,KAAK,QAAS,CAChB,GAAIh5B,EAAA63C,GAAmBG,IAAa,IAAI,KAAK,OAAO,EAClD,MAAM,IAAI,MAAM,iJAA2J,EAE7Kh4C,EAAA63C,GAAmBG,IAAa,IAAI,KAAK,OAAO,CACjD,CACG,KAAK,WAAW79C,EAAA,WAAW,iBAAX,MAAAA,EAA2B,WAC7C,KAAK,QAAU,WAAW,eAAe,OAAO,KAAK,UAAU,EAC/D,KAAK,QAAQ,KAAK,KAAK,YAAY,EACnC,KAAK,QAAQ,eAAiB,KAAK,QAAQ,kBAAiB,GAE9D,KAAM,CACJ,cAAAo4C,EACA,SAAAhxC,EACA,UAAAlH,EACA,WAAAm/B,CACN,EAAQ,KAAK,OACT,KAAK,IAAM,IAAI+J,GAAegP,EAAe,KAAK,WAAY,KAAK,KAAM,KAAK,cAAe,KAAK,cAAe,CAC/G,sBAAAvZ,CACD,EAAE,KAAK,oBAAqB,KAAK,UAAU,EAC5C,KAAK,IAAI,aAAa,CACpB,UAAA3+B,EACA,SAAAkH,EACA,aAAAg4B,EACA,WAAAC,CACN,CAAK,EACD,KAAK,gBAAkB,EACvB,KAAK,cAAgB,IACrBt/B,EAAA,KAAK,wBAAL,MAAAA,EAAA,UACD,CACD,OAAO1uB,EAAQ,KAAM2zB,EAAa,EAAG,WACnC,KAAK,QAAU,GACf,KAAK,UAAY,IACjBhF,EAAA,KAAK,MAAL,MAAAA,EAAU,aACN6F,EAAA,KAAK+3C,MACP,OAAO,qBAAqB/3C,EAAA,KAAK+3C,GAAI,EACrC73C,EAAA,KAAK63C,GAAO,OAEd/3C,EAAA63C,GAAmBG,IAAa,OAAO,KAAK,OAAO,EACnDxsE,MAAU,IAAIyqB,GAA4B,6BAA6B,KAAK,WAAa,CAAC,GAAIkJ,CAAU,GACxG,KAAK,SAAS3zB,CAAK,GACnBuiC,GAAA7T,EAAA,KAAK,MAAK,UAAV,MAAA6T,EAAA,KAAA7T,EAAoB1uB,EACrB,CACD,qBAAsB,OACpB,GAAI,CAAC,KAAK,cAAe,CACvB,KAAK,wBAAL,KAAK,sBAA0B,KAAK,gBACpC,MACD,EACD2uB,EAAA,KAAK,UAAL,MAAAA,EAAc,mBAAmB,KAAK,cAClC,MAAK,SAGT,KAAK,UAAS,CACf,CACD,WAAY,CACV,KAAK,QAAU,GACX,MAAK,YAGL,KAAK,KAAK,WACZ,KAAK,KAAK,WAAW,KAAK,kBAAkB,EAE5C,KAAK,cAAa,EAErB,CACD,eAAgB,CACV,KAAK,0BACP+F,EAAA,KAAK63C,GAAO,OAAO,sBAAsB,IAAM,CAC7C73C,EAAA,KAAK63C,GAAO,MACZ,KAAK,WAAY,EAAC,MAAM,KAAK,YAAY,CACjD,CAAO,GAED,QAAQ,UAAU,KAAK,KAAK,UAAU,EAAE,MAAM,KAAK,YAAY,CAElE,CACD,MAAM,OAAQ,CACR,KAAK,YAGT,KAAK,gBAAkB,KAAK,IAAI,oBAAoB,KAAK,aAAc,KAAK,gBAAiB,KAAK,eAAgB,KAAK,OAAO,EAC1H,KAAK,kBAAoB,KAAK,aAAa,UAAU,SACvD,KAAK,QAAU,GACX,KAAK,aAAa,YACpB,KAAK,IAAI,aACT/3C,EAAA63C,GAAmBG,IAAa,OAAO,KAAK,OAAO,EACnD,KAAK,SAAQ,IAGlB,CACH,EA5IED,GAAA,YACOC,GAAA,YAAPj7C,EAFI86C,GAEGG,GAAe,IAAI,SAF5B,IAAM/E,GAAN4E,GA8IA,MAAMpgD,GAAU,UACVhB,GAAQ,YAGd,SAASwhD,GAAcpnD,EAAG,CACxB,OAAO,KAAK,MAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAC,CAAC,EAAI,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CACnF,CACA,SAASqnD,GAAcjnD,EAAG,CACxB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,IAAMA,CAAC,CAAC,CAC3C,CACA,MAAMknD,EAAgB,CACpB,OAAO,OAAO,CAACnlE,EAAGwe,EAAG/X,EAAGgY,CAAC,EAAG,CAC1B,MAAO,CAAC,IAAK,EAAI,KAAK,IAAI,EAAG,GAAMze,EAAI,IAAOyG,EAAI,IAAO+X,EAAIC,CAAC,CAAC,CAChE,CACD,OAAO,OAAO,CAACF,CAAC,EAAG,CACjB,MAAO,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAIA,CAAC,CAC/B,CACD,OAAO,MAAM,CAACA,CAAC,EAAG,CAChB,MAAO,CAAC,MAAOA,EAAGA,EAAGA,CAAC,CACvB,CACD,OAAO,MAAM,CAACA,CAAC,EAAG,CAChB,OAAAA,EAAI2mD,GAAc3mD,CAAC,EACZ,CAACA,EAAGA,EAAGA,CAAC,CAChB,CACD,OAAO,OAAO,CAACA,CAAC,EAAG,CACjB,MAAM6mD,EAAIH,GAAc1mD,CAAC,EACzB,MAAO,IAAI6mD,CAAC,GAAGA,CAAC,GAAGA,CAAC,EACrB,CACD,OAAO,MAAM,CAACxnD,EAAGW,EAAG9mB,CAAC,EAAG,CACtB,MAAO,CAAC,IAAK,GAAMmmB,EAAI,IAAOW,EAAI,IAAO9mB,CAAC,CAC3C,CACD,OAAO,QAAQq2B,EAAO,CACpB,OAAOA,EAAM,IAAIo3C,EAAa,CAC/B,CACD,OAAO,SAASp3C,EAAO,CACrB,MAAO,IAAIA,EAAM,IAAIm3C,EAAa,EAAE,KAAK,EAAE,CAAC,EAC7C,CACD,OAAO,QAAS,CACd,MAAO,WACR,CACD,OAAO,OAAQ,CACb,MAAO,CAAC,IAAI,CACb,CACD,OAAO,SAAS,CAACjlE,EAAGwe,EAAG/X,EAAGgY,CAAC,EAAG,CAC5B,MAAO,CAAC,MAAO,EAAI,KAAK,IAAI,EAAGze,EAAIye,CAAC,EAAG,EAAI,KAAK,IAAI,EAAGhY,EAAIgY,CAAC,EAAG,EAAI,KAAK,IAAI,EAAGD,EAAIC,CAAC,CAAC,CACtF,CACD,OAAO,SAAS,CAACze,EAAGwe,EAAG/X,EAAGgY,CAAC,EAAG,CAC5B,MAAO,CAACymD,GAAc,EAAI,KAAK,IAAI,EAAGllE,EAAIye,CAAC,CAAC,EAAGymD,GAAc,EAAI,KAAK,IAAI,EAAGz+D,EAAIgY,CAAC,CAAC,EAAGymD,GAAc,EAAI,KAAK,IAAI,EAAG1mD,EAAIC,CAAC,CAAC,CAAC,CAC5H,CACD,OAAO,UAAU4mD,EAAY,CAC3B,MAAMpwC,EAAM,KAAK,SAASowC,CAAU,EAAE,MAAM,CAAC,EAC7C,OAAO,KAAK,SAASpwC,CAAG,CACzB,CACD,OAAO,SAAS,CAACrX,EAAGW,EAAG9mB,CAAC,EAAG,CACzB,MAAMuI,EAAI,EAAI4d,EACRnX,EAAI,EAAI8X,EACRC,EAAI,EAAI/mB,EACRgnB,EAAI,KAAK,IAAIze,EAAGyG,EAAG+X,CAAC,EAC1B,MAAO,CAAC,OAAQxe,EAAGyG,EAAG+X,EAAGC,CAAC,CAC3B,CACH,CAKA,MAAM6mD,EAAe,CACnB,OAAO1wE,EAAOR,EAAQmxE,EAAiB,GAAO,CAC5C,GAAI3wE,GAAS,GAAKR,GAAU,EAC1B,MAAM,IAAI,MAAM,wBAAwB,EAE1C,MAAM2+B,EAAM,KAAK,WAAW,SAAS,EACrC,OAAAA,EAAI,aAAa,UAAW,KAAK,EAC5BwyC,IACHxyC,EAAI,aAAa,QAAS,GAAGn+B,CAAK,IAAI,EACtCm+B,EAAI,aAAa,SAAU,GAAG3+B,CAAM,IAAI,GAE1C2+B,EAAI,aAAa,sBAAuB,MAAM,EAC9CA,EAAI,aAAa,UAAW,OAAOn+B,CAAK,IAAIR,CAAM,EAAE,EAC7C2+B,CACR,CACD,cAAcn2B,EAAM,CAClB,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,MAAM,0BAA0B,EAE5C,OAAO,KAAK,WAAWA,CAAI,CAC5B,CACD,WAAWA,EAAM,CACf0oB,GAAY,sCAAsC,CACnD,CACH,CACA,MAAMpD,WAAsBojD,EAAe,CACzC,WAAW1oE,EAAM,CACf,OAAO,SAAS,gBAAgBiuB,GAAQjuB,CAAI,CAC7C,CACH,CAIA,MAAM4mB,EAAS,CACb,OAAO,aAAagiD,EAAMzjE,EAAIxI,EAASyY,EAASi3C,EAAQ,CACtD,MAAMwc,EAAazzD,EAAQ,SAASjQ,EAAI,CACtC,MAAO,IACb,CAAK,EACD,OAAQxI,EAAQ,KAAI,CAClB,IAAK,WAIH,GAHIksE,EAAW,QAAU,OACvBD,EAAK,YAAcC,EAAW,OAE5Bxc,IAAW,QACb,MAEFuc,EAAK,iBAAiB,QAASvzE,GAAS,CACtC+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO9P,EAAM,OAAO,KAChC,CAAW,CACX,CAAS,EACD,MACF,IAAK,QACH,GAAIsH,EAAQ,WAAW,OAAS,SAAWA,EAAQ,WAAW,OAAS,WAAY,CAMjF,GALIksE,EAAW,QAAUlsE,EAAQ,WAAW,MAC1CisE,EAAK,aAAa,UAAW,EAAI,EACxBC,EAAW,QAAUlsE,EAAQ,WAAW,QACjDisE,EAAK,gBAAgB,SAAS,EAE5Bvc,IAAW,QACb,MAEFuc,EAAK,iBAAiB,SAAUvzE,GAAS,CACvC+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO9P,EAAM,OAAO,QAAUA,EAAM,OAAO,aAAa,OAAO,EAAIA,EAAM,OAAO,aAAa,QAAQ,CACnH,CAAa,CACb,CAAW,CACX,KAAe,CAIL,GAHIwzE,EAAW,QAAU,MACvBD,EAAK,aAAa,QAASC,EAAW,KAAK,EAEzCxc,IAAW,QACb,MAEFuc,EAAK,iBAAiB,QAASvzE,GAAS,CACtC+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO9P,EAAM,OAAO,KAClC,CAAa,CACb,CAAW,CACF,CACD,MACF,IAAK,SACH,GAAIwzE,EAAW,QAAU,KAAM,CAC7BD,EAAK,aAAa,QAASC,EAAW,KAAK,EAC3C,UAAWC,KAAUnsE,EAAQ,SACvBmsE,EAAO,WAAW,QAAUD,EAAW,MACzCC,EAAO,WAAW,SAAW,GACpBA,EAAO,WAAW,eAAe,UAAU,GACpD,OAAOA,EAAO,WAAW,QAG9B,CACDF,EAAK,iBAAiB,QAASvzE,GAAS,CACtC,MAAMsQ,EAAUtQ,EAAM,OAAO,QACvBkJ,EAAQoH,EAAQ,gBAAkB,GAAK,GAAKA,EAAQA,EAAQ,aAAa,EAAE,MACjFyP,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CACZ,CAAW,CACX,CAAS,EACD,KACH,CACF,CACD,OAAO,cAAc,CACnB,KAAAqqE,EACA,QAAAjsE,EACA,QAAAyY,EAAU,KACV,OAAAi3C,EACA,YAAA0c,CACJ,EAAK,CACD,KAAM,CACJ,WAAAC,CACD,EAAGrsE,EACEssE,EAAsBL,aAAgB,kBACxCI,EAAW,OAAS,UACtBA,EAAW,KAAO,GAAGA,EAAW,IAAI,IAAI3c,CAAM,IAEhD,SAAW,CAACv0D,EAAKyG,CAAK,IAAK,OAAO,QAAQyqE,CAAU,EAClD,GAAIzqE,GAAU,KAGd,OAAQzG,EAAG,CACT,IAAK,QACCyG,EAAM,QACRqqE,EAAK,aAAa9wE,EAAKyG,EAAM,KAAK,GAAG,CAAC,EAExC,MACF,IAAK,SACH,MACF,IAAK,KACHqqE,EAAK,aAAa,kBAAmBrqE,CAAK,EAC1C,MACF,IAAK,QACH,OAAO,OAAOqqE,EAAK,MAAOrqE,CAAK,EAC/B,MACF,IAAK,cACHqqE,EAAK,YAAcrqE,EACnB,MACF,SACM,CAAC0qE,GAAuBnxE,IAAQ,QAAUA,IAAQ,cACpD8wE,EAAK,aAAa9wE,EAAKyG,CAAK,CAEjC,CAEC0qE,GACFF,EAAY,kBAAkBH,EAAMI,EAAW,KAAMA,EAAW,SAAS,EAEvE5zD,GAAW4zD,EAAW,QACxB,KAAK,aAAaJ,EAAMI,EAAW,OAAQrsE,EAASyY,CAAO,CAE9D,CACD,OAAO,OAAO6yB,EAAY,SACxB,MAAM7yB,EAAU6yB,EAAW,kBACrB8gC,EAAc9gC,EAAW,YACzBnmC,EAAOmmC,EAAW,QAClBokB,EAASpkB,EAAW,QAAU,UAC9BihC,EAAW,SAAS,cAAcpnE,EAAK,IAAI,EAC7CA,EAAK,YACP,KAAK,cAAc,CACjB,KAAMonE,EACN,QAASpnE,EACT,OAAAuqD,EACA,YAAA0c,CACR,CAAO,EAEH,MAAMI,EAAmB9c,IAAW,WAC9B+c,EAAUnhC,EAAW,IAE3B,GADAmhC,EAAQ,OAAOF,CAAQ,EACnBjhC,EAAW,SAAU,CACvB,MAAMxd,EAAY,UAAUwd,EAAW,SAAS,UAAU,KAAK,GAAG,CAAC,IACnEmhC,EAAQ,MAAM,UAAY3+C,CAC3B,CACG0+C,GACFC,EAAQ,aAAa,QAAS,kBAAkB,EAElD,MAAM5L,EAAW,GACjB,GAAI17D,EAAK,SAAS,SAAW,EAAG,CAC9B,GAAIA,EAAK,MAAO,CACd,MAAMu9D,EAAO,SAAS,eAAev9D,EAAK,KAAK,EAC/ConE,EAAS,OAAO7J,CAAI,EAChB8J,GAAoBlK,GAAQ,gBAAgBn9D,EAAK,IAAI,GACvD07D,EAAS,KAAK6B,CAAI,CAErB,CACD,MAAO,CACL,SAAA7B,CACR,CACK,CACD,MAAM6L,EAAQ,CAAC,CAACvnE,EAAM,GAAIonE,CAAQ,CAAC,EACnC,KAAOG,EAAM,OAAS,GAAG,CACvB,KAAM,CAACn0C,EAAQp/B,EAAG8yE,CAAI,EAAIS,EAAM,GAAG,EAAE,EACrC,GAAIvzE,EAAI,IAAMo/B,EAAO,SAAS,OAAQ,CACpCm0C,EAAM,IAAG,EACT,QACD,CACD,MAAM/7B,EAAQpY,EAAO,SAAS,EAAEm0C,EAAM,GAAG,EAAE,EAAE,CAAC,CAAC,EAC/C,GAAI/7B,IAAU,KACZ,SAEF,KAAM,CACJ,KAAAhrC,CACD,EAAGgrC,EACJ,GAAIhrC,IAAS,QAAS,CACpB,MAAM+8D,EAAO,SAAS,eAAe/xB,EAAM,KAAK,EAChDkwB,EAAS,KAAK6B,CAAI,EAClBuJ,EAAK,OAAOvJ,CAAI,EAChB,QACD,CACD,MAAMiK,GAAY/+C,EAAA+iB,GAAA,YAAAA,EAAO,aAAP,MAAA/iB,EAAmB,MAAQ,SAAS,gBAAgB+iB,EAAM,WAAW,MAAOhrC,CAAI,EAAI,SAAS,cAAcA,CAAI,EAWjI,GAVAsmE,EAAK,OAAOU,CAAS,EACjBh8B,EAAM,YACR,KAAK,cAAc,CACjB,KAAMg8B,EACN,QAASh8B,EACT,QAAAl4B,EACA,OAAAi3C,EACA,YAAA0c,CACV,CAAS,IAECz+C,EAAAgjB,EAAM,WAAN,YAAAhjB,EAAgB,QAAS,EAC3B++C,EAAM,KAAK,CAAC/7B,EAAO,GAAIg8B,CAAS,CAAC,UACxBh8B,EAAM,MAAO,CACtB,MAAM+xB,EAAO,SAAS,eAAe/xB,EAAM,KAAK,EAC5C67B,GAAoBlK,GAAQ,gBAAgB38D,CAAI,GAClDk7D,EAAS,KAAK6B,CAAI,EAEpBiK,EAAU,OAAOjK,CAAI,CACtB,CACF,CACD,UAAWthC,KAAMqrC,EAAQ,iBAAiB,uDAAuD,EAC/FrrC,EAAG,aAAa,WAAY,EAAI,EAElC,MAAO,CACL,SAAAy/B,CACN,CACG,CACD,OAAO,OAAOv1B,EAAY,CACxB,MAAMxd,EAAY,UAAUwd,EAAW,SAAS,UAAU,KAAK,GAAG,CAAC,IACnEA,EAAW,IAAI,MAAM,UAAYxd,EACjCwd,EAAW,IAAI,OAAS,EACzB,CACH,CASA,MAAMshC,GAAoB,IACpBC,GAAqC,EACrCC,GAAuB,IAAI,QACjC,MAAMC,EAAyB,CAC7B,OAAO,OAAOzhC,EAAY,CAExB,OADgBA,EAAW,KAAK,eACjB,CACb,KAAK7iB,GAAe,KAClB,OAAO,IAAIukD,GAAsB1hC,CAAU,EAC7C,KAAK7iB,GAAe,KAClB,OAAO,IAAIwkD,GAAsB3hC,CAAU,EAC7C,KAAK7iB,GAAe,OAElB,OADkB6iB,EAAW,KAAK,UACjB,CACf,IAAK,KACH,OAAO,IAAI4hC,GAA4B5hC,CAAU,EACnD,IAAK,MACH,OAAIA,EAAW,KAAK,YACX,IAAI6hC,GAAmC7hC,CAAU,EAC/CA,EAAW,KAAK,SAClB,IAAI8hC,GAAgC9hC,CAAU,EAEhD,IAAI+hC,GAAkC/hC,CAAU,EACzD,IAAK,KACH,OAAO,IAAIgiC,GAA8BhiC,CAAU,EACrD,IAAK,MACH,OAAO,IAAIiiC,GAAiCjiC,CAAU,CACzD,CACD,OAAO,IAAIkiC,GAAwBliC,CAAU,EAC/C,KAAK7iB,GAAe,MAClB,OAAO,IAAIglD,GAAuBniC,CAAU,EAC9C,KAAK7iB,GAAe,SAClB,OAAO,IAAIilD,GAA0BpiC,CAAU,EACjD,KAAK7iB,GAAe,KAClB,OAAO,IAAIklD,GAAsBriC,CAAU,EAC7C,KAAK7iB,GAAe,OAClB,OAAO,IAAImlD,GAAwBtiC,CAAU,EAC/C,KAAK7iB,GAAe,OAClB,OAAO,IAAIolD,GAAwBviC,CAAU,EAC/C,KAAK7iB,GAAe,SAClB,OAAO,IAAIqlD,GAA0BxiC,CAAU,EACjD,KAAK7iB,GAAe,MAClB,OAAO,IAAIslD,GAAuBziC,CAAU,EAC9C,KAAK7iB,GAAe,IAClB,OAAO,IAAIulD,GAAqB1iC,CAAU,EAC5C,KAAK7iB,GAAe,QAClB,OAAO,IAAIwlD,GAAyB3iC,CAAU,EAChD,KAAK7iB,GAAe,UAClB,OAAO,IAAIylD,GAA2B5iC,CAAU,EAClD,KAAK7iB,GAAe,UAClB,OAAO,IAAI0lD,GAA2B7iC,CAAU,EAClD,KAAK7iB,GAAe,SAClB,OAAO,IAAI2lD,GAA0B9iC,CAAU,EACjD,KAAK7iB,GAAe,UAClB,OAAO,IAAI4lD,GAA2B/iC,CAAU,EAClD,KAAK7iB,GAAe,MAClB,OAAO,IAAI6lD,GAAuBhjC,CAAU,EAC9C,KAAK7iB,GAAe,eAClB,OAAO,IAAI8lD,GAAgCjjC,CAAU,EACvD,QACE,OAAO,IAAIkjC,GAAkBljC,CAAU,CAC1C,CACF,CACH,oBACA,MAAMmjC,GAAN,MAAMA,EAAkB,CAItB,YAAYnjC,EAAY,CACtB,aAAAojC,EAAe,GACf,aAAAC,EAAe,GACf,qBAAAC,EAAuB,EACxB,EAAG,GAAI,CAyDRp+C,EAAA,KAAAq+C,IAhEAr+C,EAAA,KAAAs+C,GAAW,MACXt+C,EAAA,KAAAu+C,GAAa,IACbv+C,EAAA,KAAAw+C,GAAgB,MAMd,KAAK,aAAeN,EACpB,KAAK,KAAOpjC,EAAW,KACvB,KAAK,MAAQA,EAAW,MACxB,KAAK,YAAcA,EAAW,YAC9B,KAAK,gBAAkBA,EAAW,gBAClC,KAAK,mBAAqBA,EAAW,mBACrC,KAAK,YAAcA,EAAW,YAC9B,KAAK,WAAaA,EAAW,WAC7B,KAAK,kBAAoBA,EAAW,kBACpC,KAAK,gBAAkBA,EAAW,gBAClC,KAAK,aAAeA,EAAW,aAC/B,KAAK,cAAgBA,EAAW,aAChC,KAAK,OAASA,EAAW,OACrBojC,IACF,KAAK,UAAY,KAAK,iBAAiBC,CAAY,GAEjDC,GACF,KAAK,sBAAqB,CAE7B,CACD,OAAO,cAAc,CACnB,SAAAK,EACA,YAAAC,EACA,SAAAC,CACJ,EAAK,CACD,MAAO,CAAC,EAAEF,GAAA,MAAAA,EAAU,KAAOC,GAAA,MAAAA,EAAa,KAAOC,GAAA,MAAAA,EAAU,IAC1D,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,KAAK,UAClB,CACD,IAAI,cAAe,CACjB,OAAOV,GAAkB,cAAc,KAAK,IAAI,CACjD,CACD,aAAa3vE,EAAQ,OACnB,GAAI,CAAC,KAAK,UACR,OAEF20B,EAAA,KAAKq7C,KAALn7C,EAAA,KAAKm7C,GAAa,CAChB,KAAM,KAAK,KAAK,KAAK,MAAM,CAAC,CAClC,GACI,KAAM,CACJ,KAAAhgD,CACD,EAAGhwB,EACAgwB,GACFe,EAAA,KAAKg/C,GAAAO,IAAL,UAAoBtgD,IAEtBlB,EAAA6F,EAAA,KAAKu7C,MAAL,MAAAphD,EAAoB,MAAM,aAAa9uB,EACxC,CACD,aAAc,OACP20B,EAAA,KAAKq7C,MAGVj/C,EAAA,KAAKg/C,GAAAO,IAAL,UAAoB37C,EAAA,KAAKq7C,IAAS,OAClClhD,EAAA6F,EAAA,KAAKu7C,MAAL,MAAAphD,EAAoB,MAAM,cAC1B+F,EAAA,KAAKm7C,GAAW,MACjB,CA+BD,iBAAiBH,EAAc,CAC7B,KAAM,CACJ,KAAAl4E,EACA,OAAQ,CACN,KAAAmI,EACA,SAAAo2B,CACD,CACF,EAAG,KACE8G,EAAY,SAAS,cAAc,SAAS,EAClDA,EAAU,aAAa,qBAAsBrlC,EAAK,EAAE,EAC9C,gBAAgB+2E,KACpB1xC,EAAU,SAAW8wC,IAEvB,KAAM,CACJ,MAAAv3C,CACD,EAAGyG,EAQJ,GAPAzG,EAAM,OAAS,KAAK,OAAO,SACvB5+B,EAAK,kBACPqlC,EAAU,MAAQrlC,EAAK,iBAErBA,EAAK,UACPqlC,EAAU,UAAU,IAAI,UAAU,EAEhC,CAACrlC,EAAK,MAAQ,gBAAgBg3E,GAAwB,CACxD,KAAM,CACJ,SAAA57C,CACD,EAAGp7B,EACJ,MAAI,CAACA,EAAK,cAAgBo7B,IAAa,GACrC,KAAK,YAAYA,EAAUiK,CAAS,EAE/BA,CACR,CACD,KAAM,CACJ,MAAAzgC,EACA,OAAAR,CACD,EAAG,KACJ,GAAI,CAAC8zE,GAAgBl4E,EAAK,YAAY,MAAQ,EAAG,CAC/C4+B,EAAM,YAAc,GAAG5+B,EAAK,YAAY,KAAK,KAC7C,MAAM44E,EAAmB54E,EAAK,YAAY,uBACpC64E,EAAiB74E,EAAK,YAAY,qBACxC,GAAI44E,EAAmB,GAAKC,EAAiB,EAAG,CAC9C,MAAMC,EAAS,QAAQF,CAAgB,0CAA0CC,CAAc,kCAC/Fj6C,EAAM,aAAek6C,CAC7B,SAAiB,gBAAgBpC,GAAoC,CAC7D,MAAMoC,EAAS,QAAQl0E,CAAK,0CAA0CR,CAAM,kCAC5Ew6B,EAAM,aAAek6C,CACtB,CACD,OAAQ94E,EAAK,YAAY,MAAK,CAC5B,KAAKi1B,GAA0B,MAC7B2J,EAAM,YAAc,QACpB,MACF,KAAK3J,GAA0B,OAC7B2J,EAAM,YAAc,SACpB,MACF,KAAK3J,GAA0B,QAC7BI,GAAK,qCAAqC,EAC1C,MACF,KAAKJ,GAA0B,MAC7BI,GAAK,mCAAmC,EACxC,MACF,KAAKJ,GAA0B,UAC7B2J,EAAM,kBAAoB,QAC1B,KAGH,CACD,MAAMm6C,EAAc/4E,EAAK,aAAe,KACpC+4E,GACF77C,EAAA,KAAKo7C,GAAa,IAClB15C,EAAM,YAAc5oB,GAAK,aAAa+iE,EAAY,CAAC,EAAI,EAAGA,EAAY,CAAC,EAAI,EAAGA,EAAY,CAAC,EAAI,CAAC,GAEhGn6C,EAAM,YAAc,CAEvB,CACD,MAAMvG,EAAOriB,GAAK,cAAc,CAAChW,EAAK,KAAK,CAAC,EAAGmI,EAAK,KAAK,CAAC,EAAInI,EAAK,KAAK,CAAC,EAAImI,EAAK,KAAK,CAAC,EAAGnI,EAAK,KAAK,CAAC,EAAGmI,EAAK,KAAK,CAAC,EAAInI,EAAK,KAAK,CAAC,EAAImI,EAAK,KAAK,CAAC,CAAC,CAAC,EAC9I,CACJ,UAAAu2B,EACA,WAAAC,EACA,MAAA4Y,EACA,MAAAC,CACN,EAAQjZ,EAAS,QACbK,EAAM,KAAO,GAAG,KAAOvG,EAAK,CAAC,EAAIkf,GAAS7Y,CAAS,IACnDE,EAAM,IAAM,GAAG,KAAOvG,EAAK,CAAC,EAAImf,GAAS7Y,CAAU,IACnD,KAAM,CACJ,SAAAvD,CACD,EAAGp7B,EACJ,OAAIA,EAAK,cAAgBo7B,IAAa,GACpCwD,EAAM,MAAQ,GAAG,IAAMh6B,EAAQ85B,CAAS,IACxCE,EAAM,OAAS,GAAG,IAAMx6B,EAASu6B,CAAU,KAE3C,KAAK,YAAYvD,EAAUiK,CAAS,EAE/BA,CACR,CACD,YAAYmV,EAAOnV,EAAY,KAAK,UAAW,CAC7C,GAAI,CAAC,KAAK,KAAK,KACb,OAEF,KAAM,CACJ,UAAA3G,EACA,WAAAC,CACD,EAAG,KAAK,OAAO,SAAS,QACzB,GAAI,CACF,MAAA/5B,EACA,OAAAR,CACD,EAAG,KACAo2C,EAAQ,MAAQ,IAClB,CAAC51C,EAAOR,CAAM,EAAI,CAACA,EAAQQ,CAAK,GAElCygC,EAAU,MAAM,MAAQ,GAAG,IAAMzgC,EAAQ85B,CAAS,IAClD2G,EAAU,MAAM,OAAS,GAAG,IAAMjhC,EAASu6B,CAAU,IACrD0G,EAAU,aAAa,sBAAuB,IAAMmV,GAAS,GAAG,CACjE,CACD,IAAI,gBAAiB,CACnB,MAAMw+B,EAAW,CAACC,EAAQC,EAAWj3E,IAAU,CAC7C,MAAM67B,EAAQ77B,EAAM,OAAOg3E,CAAM,EAC3BE,EAAYr7C,EAAM,CAAC,EACnBs7C,EAAat7C,EAAM,MAAM,CAAC,EAChC77B,EAAM,OAAO,MAAMi3E,CAAS,EAAI/D,GAAgB,GAAGgE,CAAS,OAAO,EAAEC,CAAU,EAC/E,KAAK,kBAAkB,SAAS,KAAK,KAAK,GAAI,CAC5C,CAACF,CAAS,EAAG/D,GAAgB,GAAGgE,CAAS,MAAM,EAAEC,CAAU,CACnE,CAAO,CACP,EACI,OAAO7kD,GAAO,KAAM,iBAAkB,CACpC,QAAStyB,GAAS,CAChB,KAAM,CACJ,QAAAo3E,CACV,EAAYp3E,EAAM,OACJq3E,EAASD,EAAU,IAAM,EAC/B,KAAK,UAAU,MAAM,WAAaC,EAAS,SAAW,UACtD,KAAK,kBAAkB,SAAS,KAAK,KAAK,GAAI,CAC5C,OAAQA,EACR,QAASD,IAAY,GAAKA,IAAY,CAChD,CAAS,CACF,EACD,MAAOp3E,GAAS,CACd,KAAK,kBAAkB,SAAS,KAAK,KAAK,GAAI,CAC5C,QAAS,CAACA,EAAM,OAAO,KACjC,CAAS,CACF,EACD,OAAQA,GAAS,CACf,KAAM,CACJ,OAAAq3E,CACV,EAAYr3E,EAAM,OACV,KAAK,UAAU,MAAM,WAAaq3E,EAAS,SAAW,UACtD,KAAK,kBAAkB,SAAS,KAAK,KAAK,GAAI,CAC5C,QAASA,EACT,OAAQA,CAClB,CAAS,CACF,EACD,MAAOr3E,GAAS,CACd,WAAW,IAAMA,EAAM,OAAO,MAAM,CAClC,cAAe,EACzB,CAAS,EAAG,CAAC,CACN,EACD,SAAUA,GAAS,CACjBA,EAAM,OAAO,MAAQA,EAAM,OAAO,QACnC,EACD,SAAUA,GAAS,CACjBA,EAAM,OAAO,SAAWA,EAAM,OAAO,QACtC,EACD,SAAUA,GAAS,CACjB,KAAK,aAAaA,EAAM,OAAQA,EAAM,OAAO,QAAQ,CACtD,EACD,QAASA,GAAS,CAChB+2E,EAAS,UAAW,kBAAmB/2E,CAAK,CAC7C,EACD,UAAWA,GAAS,CAClB+2E,EAAS,YAAa,kBAAmB/2E,CAAK,CAC/C,EACD,QAASA,GAAS,CAChB+2E,EAAS,UAAW,QAAS/2E,CAAK,CACnC,EACD,UAAWA,GAAS,CAClB+2E,EAAS,YAAa,QAAS/2E,CAAK,CACrC,EACD,YAAaA,GAAS,CACpB+2E,EAAS,cAAe,cAAe/2E,CAAK,CAC7C,EACD,YAAaA,GAAS,CACpB+2E,EAAS,cAAe,cAAe/2E,CAAK,CAC7C,EACD,SAAUA,GAAS,CACjB,MAAMu4C,EAAQv4C,EAAM,OAAO,SAC3B,KAAK,YAAYu4C,CAAK,EACtB,KAAK,kBAAkB,SAAS,KAAK,KAAK,GAAI,CAC5C,SAAUA,CACpB,CAAS,CACF,CACP,CAAK,CACF,CACD,0BAA0B++B,EAASC,EAAS,CAC1C,MAAMC,EAAgB,KAAK,eAC3B,UAAWvqE,KAAQ,OAAO,KAAKsqE,EAAQ,MAAM,EAAG,CAC9C,MAAMl8D,EAASi8D,EAAQrqE,CAAI,GAAKuqE,EAAcvqE,CAAI,EAClDoO,GAAA,MAAAA,EAASk8D,EACV,CACF,CACD,4BAA4BjwE,EAAS,CACnC,GAAI,CAAC,KAAK,gBACR,OAEF,MAAMksE,EAAa,KAAK,kBAAkB,YAAY,KAAK,KAAK,EAAE,EAClE,GAAI,CAACA,EACH,OAEF,MAAMgE,EAAgB,KAAK,eAC3B,SAAW,CAAC/sE,EAAYgtE,CAAM,IAAK,OAAO,QAAQjE,CAAU,EAAG,CAC7D,MAAMn4D,EAASm8D,EAAc/sE,CAAU,EACvC,GAAI4Q,EAAQ,CACV,MAAMq8D,EAAa,CACjB,OAAQ,CACN,CAACjtE,CAAU,EAAGgtE,CACf,EACD,OAAQnwE,CAClB,EACQ+T,EAAOq8D,CAAU,EACjB,OAAOlE,EAAW/oE,CAAU,CAC7B,CACF,CACF,CACD,uBAAwB,CACtB,GAAI,CAAC,KAAK,UACR,OAEF,KAAM,CACJ,WAAAktE,CACN,EAAQ,KAAK,KACT,GAAI,CAACA,EACH,OAEF,KAAM,CAACC,EAASC,EAASC,EAASC,CAAO,EAAI,KAAK,KAAK,KAAK,IAAI/rD,GAAK,KAAK,OAAOA,CAAC,CAAC,EACnF,GAAI2rD,EAAW,SAAW,EAAG,CAC3B,KAAM,CAACK,EAAKC,EAAKC,EAAKC,CAAG,EAAIR,EAAW,SAAS,EAAG,CAAC,EACrD,GAAIG,IAAYE,GAAOD,IAAYE,GAAOL,IAAYM,GAAOL,IAAYM,EACvE,MAEH,CACD,KAAM,CACJ,MAAAx7C,CACN,EAAQ,KAAK,UACT,IAAIy7C,EACJ,GAAIr9C,EAAA,KAAKs7C,IAAY,CACnB,KAAM,CACJ,YAAAS,EACA,YAAAuB,CACD,EAAG17C,EACJA,EAAM,YAAc,EACpBy7C,EAAY,CAAC,gCAAiC,0CAA2C,iDAAkD,iCAAiCtB,CAAW,mBAAmBuB,CAAW,IAAI,EACzN,KAAK,UAAU,UAAU,IAAI,WAAW,CACzC,CACD,MAAM11E,EAAQm1E,EAAUF,EAClBz1E,EAAS41E,EAAUF,EACnB,CACJ,WAAAS,CACD,EAAG,KACEx3C,EAAMw3C,EAAW,cAAc,KAAK,EAC1Cx3C,EAAI,UAAU,IAAI,yBAAyB,EAC3CA,EAAI,aAAa,QAAS,CAAC,EAC3BA,EAAI,aAAa,SAAU,CAAC,EAC5B,MAAMy3C,EAAOD,EAAW,cAAc,MAAM,EAC5Cx3C,EAAI,OAAOy3C,CAAI,EACf,MAAMC,EAAWF,EAAW,cAAc,UAAU,EAC9CxoE,EAAK,YAAY,KAAK,KAAK,EAAE,GACnC0oE,EAAS,aAAa,KAAM1oE,CAAE,EAC9B0oE,EAAS,aAAa,gBAAiB,mBAAmB,EAC1DD,EAAK,OAAOC,CAAQ,EACpB,QAAS/3E,EAAI,EAAG05B,EAAKw9C,EAAW,OAAQl3E,EAAI05B,EAAI15B,GAAK,EAAG,CACtD,MAAMu3E,EAAML,EAAWl3E,CAAC,EAClBw3E,EAAMN,EAAWl3E,EAAI,CAAC,EACtBy3E,EAAMP,EAAWl3E,EAAI,CAAC,EACtB03E,EAAMR,EAAWl3E,EAAI,CAAC,EACtB21B,EAAOkiD,EAAW,cAAc,MAAM,EACtCtsD,GAAKksD,EAAMN,GAAWj1E,EACtB4pB,GAAKwrD,EAAUE,GAAO91E,EACtBs2E,IAAaT,EAAME,GAAOv1E,EAC1B+1E,IAAcT,EAAME,GAAOh2E,EACjCi0B,EAAK,aAAa,IAAKpK,CAAC,EACxBoK,EAAK,aAAa,IAAK7J,CAAC,EACxB6J,EAAK,aAAa,QAASqiD,EAAS,EACpCriD,EAAK,aAAa,SAAUsiD,EAAU,EACtCF,EAAS,OAAOpiD,CAAI,EACpBgiD,GAAA,MAAAA,EAAW,KAAK,+CAA+CpsD,CAAC,QAAQO,CAAC,YAAYksD,EAAS,aAAaC,EAAU,MACtH,CACG39C,EAAA,KAAKs7C,MACP+B,EAAU,KAAK,cAAc,EAC7Bz7C,EAAM,gBAAkBy7C,EAAU,KAAK,EAAE,GAE3C,KAAK,UAAU,OAAOt3C,CAAG,EACzB,KAAK,UAAU,MAAM,SAAW,QAAQhxB,CAAE,GAC3C,CACD,cAAe,CACb,KAAM,CACJ,KAAA/R,CACD,EAAG,KACE46E,EAAQ19C,EAAA,KAAKq7C,GAAgB,IAAIvB,GAAuB,CAC5D,KAAM,CACJ,MAAOh3E,EAAK,MACZ,SAAUA,EAAK,SACf,iBAAkBA,EAAK,iBACvB,YAAaA,EAAK,YAClB,SAAUA,EAAK,SACf,WAAYA,EAAK,KACjB,YAAa,EACb,GAAI,SAASA,EAAK,EAAE,GACpB,SAAUA,EAAK,QAChB,EACD,OAAQ,KAAK,OACb,SAAU,CAAC,IAAI,CACrB,CAAK,GACD,KAAK,OAAO,IAAI,OAAO46E,EAAM,OAAM,CAAE,CACtC,CACD,QAAS,CACPtlD,GAAY,mDAAmD,CAChE,CACD,mBAAmBpmB,EAAM2rE,EAAS,KAAM,CACtC,MAAMC,EAAS,GACf,GAAI,KAAK,cAAe,CACtB,MAAMC,EAAW,KAAK,cAAc7rE,CAAI,EACxC,GAAI6rE,EACF,SAAW,CACT,KAAA5yE,EACA,GAAA4J,EACA,aAAAipE,CACD,IAAID,EAAU,CAIb,GAHI5yE,IAAS,IAGT4J,IAAO8oE,EACT,SAEF,MAAMI,EAAc,OAAOD,GAAiB,SAAWA,EAAe,KAChEE,EAAa,SAAS,cAAc,qBAAqBnpE,CAAE,IAAI,EACrE,GAAImpE,GAAc,CAAC7E,GAAqB,IAAI6E,CAAU,EAAG,CACvD7lD,GAAK,6CAA6CtjB,CAAE,EAAE,EACtD,QACD,CACD+oE,EAAO,KAAK,CACV,GAAA/oE,EACA,YAAAkpE,EACA,WAAAC,CACZ,CAAW,CACF,CAEH,OAAOJ,CACR,CACD,UAAWI,KAAc,SAAS,kBAAkBhsE,CAAI,EAAG,CACzD,KAAM,CACJ,YAAA+rE,CACD,EAAGC,EACEnpE,EAAKmpE,EAAW,aAAa,iBAAiB,EAChDnpE,IAAO8oE,GAGNxE,GAAqB,IAAI6E,CAAU,GAGxCJ,EAAO,KAAK,CACV,GAAA/oE,EACA,YAAAkpE,EACA,WAAAC,CACR,CAAO,CACF,CACD,OAAOJ,CACR,CACD,MAAO,OACD,KAAK,YACP,KAAK,UAAU,OAAS,KAE1B3jD,EAAA,KAAK,QAAL,MAAAA,EAAY,WACb,CACD,MAAO,OACD,KAAK,YACP,KAAK,UAAU,OAAS,KAE1BA,EAAA,KAAK,QAAL,MAAAA,EAAY,WACb,CACD,2BAA4B,CAC1B,OAAO,KAAK,SACb,CACD,kBAAmB,CACjB,MAAMgkD,EAAW,KAAK,4BACtB,GAAI,MAAM,QAAQA,CAAQ,EACxB,UAAW5xE,KAAW4xE,EACpB5xE,EAAQ,UAAU,IAAI,eAAe,OAGvC4xE,EAAS,UAAU,IAAI,eAAe,CAEzC,CACD,oBAAqB,CACnB,GAAI,CAAC,KAAK,YACR,OAEF,KAAM,CACJ,qBAAsB/rE,EACtB,KAAM,CACJ,GAAIy+B,CACL,CACF,EAAG,KACJ,KAAK,UAAU,iBAAiB,WAAY,IAAM,QAChD1W,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,6BAA8B,CAChE,OAAQ,KACR,KAAA/nB,EACA,OAAAy+B,CACR,EACA,CAAK,CACF,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,CAC5C,CACD,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,CAC5C,CACH,EA5fEwqC,GAAA,YACAC,GAAA,YACAC,GAAA,YA8DAH,GAAA,YAAAO,GAAc,SAACtgD,EAAM,CACnB,KAAM,CACJ,UAAW,CACT,MAAAuG,CACD,EACD,KAAM,CACJ,KAAMw8C,EACN,SAAAhgD,CACD,EACD,OAAQ,CACN,SAAU,CACR,QAAS,CACP,UAAAsD,EACA,WAAAC,EACA,MAAA4Y,EACA,MAAAC,CACD,CACF,CACF,CACF,EAAG,KACJ4jC,GAAA,MAAAA,EAAa,OAAO,EAAG,EAAG,GAAG/iD,GAC7BuG,EAAM,KAAO,GAAG,KAAOvG,EAAK,CAAC,EAAIkf,GAAS7Y,CAAS,IACnDE,EAAM,IAAM,GAAG,KAAOD,EAAatG,EAAK,CAAC,EAAImf,GAAS7Y,CAAU,IAC5DvD,IAAa,GACfwD,EAAM,MAAQ,GAAG,KAAOvG,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAKqG,CAAS,IACtDE,EAAM,OAAS,GAAG,KAAOvG,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAKsG,CAAU,KAExD,KAAK,YAAYvD,CAAQ,CAE5B,EA9FH,IAAM28C,GAANC,yBA8fA,MAAMzB,WAA8BwB,EAAkB,CACpD,YAAYljC,EAAYtiC,EAAU,KAAM,CACtC,MAAMsiC,EAAY,CAChB,aAAc,GACd,aAAc,CAAC,EAACtiC,GAAA,MAAAA,EAAS,cACzB,qBAAsB,EAC5B,CAAK,EA6CHwnB,EAAA,KAAAshD,IAuBAthD,EAAA,KAAAuhD,IAWAvhD,EAAA,KAAAwhD,IA9EE,KAAK,cAAgB1mC,EAAW,KAAK,aACtC,CACD,QAAS,CACP,KAAM,CACJ,KAAA70C,EACA,YAAA21E,CACD,EAAG,KACE6F,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,aAAa,kBAAmBx7E,EAAK,EAAE,EAC5C,IAAIy7E,EAAU,GACd,OAAIz7E,EAAK,KACP21E,EAAY,kBAAkB6F,EAAMx7E,EAAK,IAAKA,EAAK,SAAS,EAC5Dy7E,EAAU,IACDz7E,EAAK,QACd,KAAK,iBAAiBw7E,EAAMx7E,EAAK,MAAM,EACvCy7E,EAAU,IACDz7E,EAAK,YACdo5B,EAAA,KAAKkiD,GAAAI,IAAL,UAAqBF,EAAMx7E,EAAK,WAAYA,EAAK,gBACjDy7E,EAAU,IACDz7E,EAAK,aACdo5B,EAAA,KAAKmiD,GAAAI,IAAL,UAAsBH,EAAMx7E,EAAK,aACjCy7E,EAAU,IACDz7E,EAAK,MACd,KAAK,UAAUw7E,EAAMx7E,EAAK,IAAI,EAC9By7E,EAAU,KAENz7E,EAAK,UAAYA,EAAK,QAAQ,QAAUA,EAAK,QAAQ,UAAU,GAAKA,EAAK,QAAQ,YAAY,IAAM,KAAK,iBAAmB,KAAK,eAClI,KAAK,cAAcw7E,EAAMx7E,CAAI,EAC7By7E,EAAU,IAERz7E,EAAK,WACP,KAAK,qBAAqBw7E,EAAMx7E,EAAK,SAAS,EAC9Cy7E,EAAU,IACD,KAAK,eAAiB,CAACA,IAChC,KAAK,UAAUD,EAAM,EAAE,EACvBC,EAAU,KAGd,KAAK,UAAU,UAAU,IAAI,gBAAgB,EACzCA,GACF,KAAK,UAAU,OAAOD,CAAI,EAErB,KAAK,SACb,CAID,UAAUA,EAAMI,EAAa,CAC3BJ,EAAK,KAAO,KAAK,YAAY,mBAAmBI,CAAW,EAC3DJ,EAAK,QAAU,KACTI,GACF,KAAK,YAAY,gBAAgBA,CAAW,EAEvC,KAELA,GAAeA,IAAgB,KACjCxiD,EAAA,KAAKiiD,GAAAQ,IAAL,UAEH,CACD,iBAAiBL,EAAMl+D,EAAQ,CAC7Bk+D,EAAK,KAAO,KAAK,YAAY,aAAa,EAAE,EAC5CA,EAAK,QAAU,KACb,KAAK,YAAY,mBAAmBl+D,CAAM,EACnC,IAET8b,EAAA,KAAKiiD,GAAAQ,IAAL,UACD,CAoBD,cAAcL,EAAMx7E,EAAM,CACxBw7E,EAAK,KAAO,KAAK,YAAY,aAAa,EAAE,EAC5C,MAAMnkE,EAAM,IAAI,IAAI,CAAC,CAAC,SAAU,SAAS,EAAG,CAAC,WAAY,WAAW,EAAG,CAAC,aAAc,aAAa,CAAC,CAAC,EACrG,UAAWnI,KAAQ,OAAO,KAAKlP,EAAK,OAAO,EAAG,CAC5C,MAAMi5E,EAAS5hE,EAAI,IAAInI,CAAI,EACtB+pE,IAGLuC,EAAKvC,CAAM,EAAI,IAAM,OACnB,OAAA9hD,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAIn3B,EAAK,GACT,KAAAkP,CACD,CACX,GACe,EACf,EACK,CACIssE,EAAK,UACRA,EAAK,QAAU,IAAM,IAEvBpiD,EAAA,KAAKiiD,GAAAQ,IAAL,UACD,CACD,qBAAqBL,EAAMM,EAAW,CACpC,MAAMC,EAAmBP,EAAK,QAK9B,GAJKO,IACHP,EAAK,KAAO,KAAK,YAAY,aAAa,EAAE,GAE9CpiD,EAAA,KAAKiiD,GAAAQ,IAAL,WACI,CAAC,KAAK,cAAe,CACvBxmD,GAAK,gHAAqH,EACrH0mD,IACHP,EAAK,QAAU,IAAM,IAEvB,MACD,CACDA,EAAK,QAAU,IAAM,OACnBO,GAAA,MAAAA,IACA,KAAM,CACJ,OAAQC,EACR,KAAMC,EACN,QAAAC,CACD,EAAGJ,EACEK,EAAY,GAClB,GAAIH,EAAgB,SAAW,GAAKC,EAAc,SAAW,EAAG,CAC9D,MAAMG,EAAW,IAAI,IAAIH,CAAa,EACtC,UAAWI,KAAaL,EAAiB,CACvC,MAAMlB,EAAS,KAAK,cAAcuB,CAAS,GAAK,GAChD,SAAW,CACT,GAAAtqE,CACD,IAAI+oE,EACHsB,EAAS,IAAIrqE,CAAE,CAElB,CACD,UAAW+oE,KAAU,OAAO,OAAO,KAAK,aAAa,EACnD,UAAWwB,KAASxB,EACdsB,EAAS,IAAIE,EAAM,EAAE,IAAMJ,GAC7BC,EAAU,KAAKG,CAAK,CAIlC,KACQ,WAAWxB,KAAU,OAAO,OAAO,KAAK,aAAa,EACnDqB,EAAU,KAAK,GAAGrB,CAAM,EAG5B,MAAM94D,EAAU,KAAK,kBACfu6D,EAAS,GACf,UAAWD,KAASH,EAAW,CAC7B,KAAM,CACJ,GAAApqE,CACD,EAAGuqE,EAEJ,OADAC,EAAO,KAAKxqE,CAAE,EACNuqE,EAAM,KAAI,CAChB,IAAK,OACH,CACE,MAAMnxE,EAAQmxE,EAAM,cAAgB,GACpCt6D,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CAChB,CAAe,EACD,KACD,CACH,IAAK,WACL,IAAK,cACH,CACE,MAAMA,EAAQmxE,EAAM,eAAiBA,EAAM,aAC3Ct6D,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CAChB,CAAe,EACD,KACD,CACH,IAAK,WACL,IAAK,UACH,CACE,MAAMA,EAAQmxE,EAAM,cAAgB,GACpCt6D,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CAChB,CAAe,EACD,KACD,CACH,QACE,QACH,CACD,MAAM+vE,EAAa,SAAS,cAAc,qBAAqBnpE,CAAE,IAAI,EACrE,GAAKmpE,GAEE,GAAI,CAAC7E,GAAqB,IAAI6E,CAAU,EAAG,CAChD7lD,GAAK,+CAA+CtjB,CAAE,EAAE,EACxD,QACD,MAJC,UAKFmpE,EAAW,cAAc,IAAI,MAAM,WAAW,CAAC,CAChD,CACD,OAAI,KAAK,mBACP/jD,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAI,MACJ,IAAKolD,EACL,KAAM,WACP,CACX,IAEa,EACb,CACG,CACH,CAxKElB,GAAA,YAAAQ,GAAgB,UAAG,CACjB,KAAK,UAAU,aAAa,qBAAsB,EAAE,CACrD,EAqBDP,GAAA,YAAAI,GAAe,SAACF,EAAMgB,EAAYt0E,EAAO,KAAM,CAC7CszE,EAAK,KAAO,KAAK,YAAY,aAAa,EAAE,EACxCgB,EAAW,cACbhB,EAAK,MAAQgB,EAAW,aAE1BhB,EAAK,QAAU,IAAM,OACnB,OAAArkD,EAAA,KAAK,kBAAL,MAAAA,EAAsB,mBAAmBqlD,EAAW,QAASA,EAAW,SAAUt0E,GAC3E,EACb,EACIkxB,EAAA,KAAKiiD,GAAAQ,IAAL,UACD,EACDN,GAAA,YAAAI,GAAgB,SAACH,EAAMl+D,EAAQ,CAC7Bk+D,EAAK,KAAO,KAAK,YAAY,aAAa,EAAE,EAC5CA,EAAK,QAAU,KACb,KAAK,YAAY,mBAAmBl+D,CAAM,EACnC,IAET8b,EAAA,KAAKiiD,GAAAQ,IAAL,UACD,EAgIH,MAAMrF,WAA8BuB,EAAkB,CACpD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,EACpB,CAAK,CACF,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,gBAAgB,EAC7C,MAAM3yC,EAAQ,SAAS,cAAc,KAAK,EAC1C,OAAAA,EAAM,IAAM,KAAK,mBAAqB,cAAgB,KAAK,KAAK,KAAK,YAAa,EAAG,OACrFA,EAAM,aAAa,eAAgB,4BAA4B,EAC/DA,EAAM,aAAa,iBAAkB,KAAK,UAAU,CAClD,KAAM,KAAK,KAAK,IACjB,EAAC,EACE,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,UAAU,OAAOA,CAAK,EACpB,KAAK,SACb,CACH,CACA,MAAM60E,WAAgCgB,EAAkB,CACtD,QAAS,CACP,OAAO,KAAK,SACb,CACD,yBAAyBxuE,EAAS,OAC5B,KAAK,KAAK,iBACR4tB,EAAA5tB,EAAQ,kBAAR,YAAA4tB,EAAyB,YAAa,WACxC5tB,EAAQ,gBAAgB,OAAS,IAEnCA,EAAQ,OAAS,GAEpB,CACD,gBAAgBtH,EAAO,CACrB,OAAOmwB,GAAiB,SAAS,MAAQnwB,EAAM,QAAUA,EAAM,OAChE,CACD,kBAAkBsH,EAASkzE,EAAaC,EAAUliE,EAAWmiE,EAAa,CACpED,EAAS,SAAS,OAAO,EAC3BnzE,EAAQ,iBAAiBmzE,EAAUz6E,GAAS,QAC1Ck1B,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAI,KAAK,KAAK,GACd,KAAM3c,EACN,MAAOmiE,EAAY16E,CAAK,EACxB,MAAOA,EAAM,SACb,SAAU,KAAK,gBAAgBA,CAAK,CACrC,CACX,EACA,CAAO,EAEDsH,EAAQ,iBAAiBmzE,EAAUz6E,GAAS,OAC1C,GAAIy6E,IAAa,OAAQ,CACvB,GAAI,CAACD,EAAY,SAAW,CAACx6E,EAAM,cACjC,OAEFw6E,EAAY,QAAU,EAChC,SAAmBC,IAAa,QAAS,CAC/B,GAAID,EAAY,QACd,OAEFA,EAAY,QAAU,EACvB,CACIE,KAGLxlD,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAI,KAAK,KAAK,GACd,KAAM3c,EACN,MAAOmiE,EAAY16E,CAAK,CACzB,CACX,GACA,CAAO,CAEJ,CACD,mBAAmBsH,EAASkzE,EAAariE,EAAOjL,EAAQ,WACtD,SAAW,CAACutE,EAAUliE,CAAS,IAAKJ,GAC9BI,IAAc,WAAY2c,EAAA,KAAK,KAAK,UAAV,MAAAA,EAAoB3c,OAC5CA,IAAc,SAAWA,IAAc,UACzCiiE,MAAgB,CACd,QAAS,EACrB,IAEQ,KAAK,kBAAkBlzE,EAASkzE,EAAaC,EAAUliE,EAAWrL,CAAM,EACpEqL,IAAc,SAAW,GAAC0c,EAAA,KAAK,KAAK,UAAV,MAAAA,EAAmB,MAC/C,KAAK,kBAAkB3tB,EAASkzE,EAAa,OAAQ,OAAQ,IAAI,EACxDjiE,IAAc,QAAU,GAACuwB,EAAA,KAAK,KAAK,UAAV,MAAAA,EAAmB,QACrD,KAAK,kBAAkBxhC,EAASkzE,EAAa,QAAS,QAAS,IAAI,EAI1E,CACD,oBAAoBlzE,EAAS,CAC3B,MAAMu0B,EAAQ,KAAK,KAAK,iBAAmB,KAC3Cv0B,EAAQ,MAAM,gBAAkBu0B,IAAU,KAAO,cAAgB9nB,GAAK,aAAa8nB,EAAM,CAAC,EAAGA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAChH,CACD,cAAcv0B,EAAS,CACrB,MAAMqzE,EAAiB,CAAC,OAAQ,SAAU,OAAO,EAC3C,CACJ,UAAAC,CACN,EAAQ,KAAK,KAAK,sBACRvhB,EAAW,KAAK,KAAK,sBAAsB,UAAY8a,GACvDx3C,EAAQr1B,EAAQ,MACtB,IAAIuzE,EACJ,MAAMC,EAAc,EACdC,EAAoB/uD,GAAK,KAAK,MAAM,GAAKA,CAAC,EAAI,GACpD,GAAI,KAAK,KAAK,UAAW,CACvB,MAAM7pB,EAAS,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,EAAI24E,CAAW,EACrEE,EAAgB,KAAK,MAAM74E,GAAUywB,GAAcymC,EAAS,GAAK,EACjE4hB,EAAa94E,EAAS64E,EAC5BH,EAAmB,KAAK,IAAIxhB,EAAU0hB,EAAkBE,EAAaroD,EAAW,CAAC,CACvF,KAAW,CACL,MAAMzwB,EAAS,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,EAAI24E,CAAW,EAC3ED,EAAmB,KAAK,IAAIxhB,EAAU0hB,EAAkB54E,EAASywB,EAAW,CAAC,CAC9E,CACD+J,EAAM,SAAW,QAAQk+C,CAAgB,kCACzCl+C,EAAM,MAAQ5oB,GAAK,aAAa6mE,EAAU,CAAC,EAAGA,EAAU,CAAC,EAAGA,EAAU,CAAC,CAAC,EACpE,KAAK,KAAK,gBAAkB,OAC9Bj+C,EAAM,UAAYg+C,EAAe,KAAK,KAAK,aAAa,EAE3D,CACD,aAAarzE,EAAS4zE,EAAY,CAC5BA,EACF5zE,EAAQ,aAAa,WAAY,EAAI,EAErCA,EAAQ,gBAAgB,UAAU,EAEpCA,EAAQ,aAAa,gBAAiB4zE,CAAU,CACjD,CACH,CACA,MAAM1G,WAAoCM,EAAwB,CAChE,YAAYliC,EAAY,CACtB,MAAMojC,EAAepjC,EAAW,aAAeA,EAAW,KAAK,cAAgB,CAACA,EAAW,KAAK,eAAiB,CAAC,CAACA,EAAW,KAAK,WACnI,MAAMA,EAAY,CAChB,aAAAojC,CACN,CAAK,CACF,CACD,sBAAsBxF,EAAM/tE,EAAKyG,EAAOiyE,EAAc,CACpD,MAAMp7D,EAAU,KAAK,kBACrB,UAAWzY,KAAW,KAAK,mBAAmBkpE,EAAK,KAAMA,EAAK,EAAE,EAC1DlpE,EAAQ,aACVA,EAAQ,WAAW7E,CAAG,EAAIyG,GAE5B6W,EAAQ,SAASzY,EAAQ,GAAI,CAC3B,CAAC6zE,CAAY,EAAGjyE,CACxB,CAAO,CAEJ,CACD,QAAS,SACP,MAAM6W,EAAU,KAAK,kBACfjQ,EAAK,KAAK,KAAK,GACrB,KAAK,UAAU,UAAU,IAAI,sBAAsB,EACnD,IAAIxI,EAAU,KACd,GAAI,KAAK,YAAa,CACpB,MAAMksE,EAAazzD,EAAQ,SAASjQ,EAAI,CACtC,MAAO,KAAK,KAAK,UACzB,CAAO,EACD,IAAIw+D,EAAckF,EAAW,OAAS,GACtC,MAAM4H,EAASr7D,EAAQ,SAASjQ,EAAI,CAClC,UAAW,KAAK,KAAK,MACtB,GAAE,UACCsrE,GAAU9M,EAAY,OAAS8M,IACjC9M,EAAcA,EAAY,MAAM,EAAG8M,CAAM,GAE3C,IAAIC,EAAuB7H,EAAW,kBAAkBt+C,EAAA,KAAK,KAAK,cAAV,YAAAA,EAAuB,KAAK;AAAA,KAAS,KACzFmmD,GAAwB,KAAK,KAAK,OACpCA,EAAuBA,EAAqB,WAAW,OAAQ,EAAE,GAEnE,MAAMb,EAAc,CAClB,UAAWlM,EACX,eAAgB+M,EAChB,mBAAoB,KACpB,UAAW,EACX,QAAS,EACjB,EACU,KAAK,KAAK,WACZ/zE,EAAU,SAAS,cAAc,UAAU,EAC3CA,EAAQ,YAAc+zE,GAAwB/M,EAC1C,KAAK,KAAK,cACZhnE,EAAQ,MAAM,UAAY,YAG5BA,EAAU,SAAS,cAAc,OAAO,EACxCA,EAAQ,KAAO,KAAK,KAAK,SAAW,WAAa,OACjDA,EAAQ,aAAa,QAAS+zE,GAAwB/M,CAAW,EAC7D,KAAK,KAAK,cACZhnE,EAAQ,MAAM,UAAY,WAG1B,KAAK,KAAK,eACZA,EAAQ,OAAS,IAEnB8sE,GAAqB,IAAI9sE,CAAO,EAChCA,EAAQ,aAAa,kBAAmBwI,CAAE,EAC1CxI,EAAQ,SAAW,KAAK,KAAK,SAC7BA,EAAQ,KAAO,KAAK,KAAK,UACzBA,EAAQ,SAAW4sE,GACnB,KAAK,aAAa5sE,EAAS,KAAK,KAAK,QAAQ,EACzC8zE,IACF9zE,EAAQ,UAAY8zE,GAEtB9zE,EAAQ,iBAAiB,QAAStH,GAAS,CACzC+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO9P,EAAM,OAAO,KAC9B,CAAS,EACD,KAAK,sBAAsBsH,EAAS,QAAStH,EAAM,OAAO,MAAO,OAAO,EACxEw6E,EAAY,eAAiB,IACrC,CAAO,EACDlzE,EAAQ,iBAAiB,YAAatH,GAAS,CAC7C,MAAM68C,EAAe,KAAK,KAAK,mBAAqB,GACpDv1C,EAAQ,MAAQkzE,EAAY,UAAY39B,EACxC29B,EAAY,eAAiB,IACrC,CAAO,EACD,IAAIc,EAAet7E,GAAS,CAC1B,KAAM,CACJ,eAAAu7E,CACD,EAAGf,EACAe,GAAmB,OACrBv7E,EAAM,OAAO,MAAQu7E,GAEvBv7E,EAAM,OAAO,WAAa,CAClC,EACM,GAAI,KAAK,iBAAmB,KAAK,aAAc,CAC7CsH,EAAQ,iBAAiB,QAAStH,GAAS,OACzC,GAAIw6E,EAAY,QACd,OAEF,KAAM,CACJ,OAAApmE,CACD,EAAGpU,EACAw6E,EAAY,YACdpmE,EAAO,MAAQomE,EAAY,WAE7BA,EAAY,mBAAqBpmE,EAAO,MACxComE,EAAY,UAAY,GACnBtlD,EAAA,KAAK,KAAK,UAAV,MAAAA,EAAmB,QACtBslD,EAAY,QAAU,GAElC,CAAS,EACDlzE,EAAQ,iBAAiB,oBAAqBiwE,GAAW,CACvD,KAAK,yBAAyBA,EAAQ,MAAM,EAC5C,MAAMD,EAAU,CACd,MAAMt3E,EAAO,CACXw6E,EAAY,UAAYx6E,EAAM,OAAO,OAAS,GAC9C+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO0qE,EAAY,UAAU,SAAU,CACvD,CAAe,EACDx6E,EAAM,OAAO,MAAQw6E,EAAY,SAClC,EACD,eAAex6E,EAAO,CACpB,KAAM,CACJ,eAAAu7E,CAChB,EAAkBv7E,EAAM,OACVw6E,EAAY,eAAiBe,EACzBA,GAAmB,MAAwCv7E,EAAM,SAAW,SAAS,gBACvFA,EAAM,OAAO,MAAQu7E,GAEvBx7D,EAAQ,SAASjQ,EAAI,CACnB,eAAAyrE,CAChB,CAAe,CACF,EACD,SAASv7E,EAAO,CACdA,EAAM,OAAO,kBAAkB,GAAGA,EAAM,OAAO,QAAQ,CACxD,EACD,UAAWA,GAAS,OAClB,KAAM,CACJ,UAAAw7E,CAChB,EAAkBx7E,EAAM,OACJ,CACJ,OAAAoU,CACD,EAAGpU,EACJ,GAAIw7E,IAAc,EAAG,CACnBpnE,EAAO,gBAAgB,WAAW,EAClC,MACD,CACDA,EAAO,aAAa,YAAaonE,CAAS,EAC1C,IAAItyE,EAAQsxE,EAAY,UACpB,CAACtxE,GAASA,EAAM,QAAUsyE,IAG9BtyE,EAAQA,EAAM,MAAM,EAAGsyE,CAAS,EAChCpnE,EAAO,MAAQomE,EAAY,UAAYtxE,EACvC6W,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CAChB,CAAe,GACDgsB,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAAplB,EACA,KAAM,YACN,MAAA5G,EACA,WAAY,GACZ,UAAW,EACX,SAAUkL,EAAO,eACjB,OAAQA,EAAO,YAChB,CACjB,GACa,CACb,EACU,KAAK,0BAA0BkjE,EAASC,CAAO,CACzD,CAAS,EACDjwE,EAAQ,iBAAiB,UAAWtH,GAAS,OAC3Cw6E,EAAY,UAAY,EACxB,IAAIiB,EAAY,GAQhB,GAPIz7E,EAAM,MAAQ,SAChBy7E,EAAY,EACHz7E,EAAM,MAAQ,SAAW,CAAC,KAAK,KAAK,UAC7Cy7E,EAAY,EACHz7E,EAAM,MAAQ,QACvBw6E,EAAY,UAAY,GAEtBiB,IAAc,GAChB,OAEF,KAAM,CACJ,MAAAvyE,CACZ,EAAclJ,EAAM,OACNw6E,EAAY,qBAAuBtxE,IAGvCsxE,EAAY,mBAAqBtxE,EACjCsxE,EAAY,UAAYtxE,GACxBgsB,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAAplB,EACA,KAAM,YACN,MAAA5G,EACA,WAAY,GACZ,UAAAuyE,EACA,SAAUz7E,EAAM,OAAO,eACvB,OAAQA,EAAM,OAAO,YACtB,CACb,GACA,CAAS,EACD,MAAM07E,EAAgBJ,EACtBA,EAAe,KACfh0E,EAAQ,iBAAiB,OAAQtH,GAAS,SACxC,GAAI,CAACw6E,EAAY,SAAW,CAACx6E,EAAM,cACjC,QAEGk1B,EAAA,KAAK,KAAK,UAAV,MAAAA,EAAmB,OACtBslD,EAAY,QAAU,IAExB,KAAM,CACJ,MAAAtxE,CACZ,EAAclJ,EAAM,OACVw6E,EAAY,UAAYtxE,EACpBsxE,EAAY,qBAAuBtxE,KACrC+rB,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAAnlB,EACA,KAAM,YACN,MAAA5G,EACA,WAAY,GACZ,UAAWsxE,EAAY,UACvB,SAAUx6E,EAAM,OAAO,eACvB,OAAQA,EAAM,OAAO,YACtB,CACf,IAEU07E,EAAc17E,CAAK,CAC7B,CAAS,GACGi1B,EAAA,KAAK,KAAK,UAAV,MAAAA,EAAmB,WACrB3tB,EAAQ,iBAAiB,cAAetH,GAAS,OAC/Cw6E,EAAY,mBAAqB,KACjC,KAAM,CACJ,KAAAz8E,EACA,OAAAqW,CACD,EAAGpU,EACE,CACJ,MAAAkJ,EACA,eAAAyyE,EACA,aAAAC,CACD,EAAGxnE,EACJ,IAAIynE,EAAWF,EACbG,EAASF,EACX,OAAQ57E,EAAM,UAAS,CACrB,IAAK,qBACH,CACE,MAAMmiE,EAAQj5D,EAAM,UAAU,EAAGyyE,CAAc,EAAE,MAAM,YAAY,EAC/DxZ,IACF0Z,GAAY1Z,EAAM,CAAC,EAAE,QAEvB,KACD,CACH,IAAK,oBACH,CACE,MAAMA,EAAQj5D,EAAM,UAAUyyE,CAAc,EAAE,MAAM,YAAY,EAC5DxZ,IACF2Z,GAAU3Z,EAAM,CAAC,EAAE,QAErB,KACD,CACH,IAAK,wBACCwZ,IAAmBC,IACrBC,GAAY,GAEd,MACF,IAAK,uBACCF,IAAmBC,IACrBE,GAAU,GAEZ,KACH,CACD97E,EAAM,eAAc,GACpBk1B,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAAplB,EACA,KAAM,YACN,MAAA5G,EACA,OAAQnL,GAAQ,GAChB,WAAY,GACZ,SAAA89E,EACA,OAAAC,CACD,CACf,EACA,CAAW,EAEH,KAAK,mBAAmBx0E,EAASkzE,EAAa,CAAC,CAAC,QAAS,OAAO,EAAG,CAAC,OAAQ,MAAM,EAAG,CAAC,YAAa,YAAY,EAAG,CAAC,aAAc,aAAa,EAAG,CAAC,aAAc,YAAY,EAAG,CAAC,UAAW,UAAU,CAAC,EAAGx6E,GAASA,EAAM,OAAO,KAAK,CACrO,CAID,GAHIs7E,GACFh0E,EAAQ,iBAAiB,OAAQg0E,CAAY,EAE3C,KAAK,KAAK,KAAM,CAElB,MAAMS,GADa,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,GACxBX,EAC/B9zE,EAAQ,UAAU,IAAI,MAAM,EAC5BA,EAAQ,MAAM,cAAgB,QAAQy0E,CAAS,uCAChD,CACP,MACMz0E,EAAU,SAAS,cAAc,KAAK,EACtCA,EAAQ,YAAc,KAAK,KAAK,WAChCA,EAAQ,MAAM,cAAgB,SAC9BA,EAAQ,MAAM,QAAU,aACpB,KAAK,KAAK,eACZA,EAAQ,OAAS,IAGrB,YAAK,cAAcA,CAAO,EAC1B,KAAK,oBAAoBA,CAAO,EAChC,KAAK,4BAA4BA,CAAO,EACxC,KAAK,UAAU,OAAOA,CAAO,EACtB,KAAK,SACb,CACH,CACA,MAAMutE,WAAyCC,EAAwB,CACrE,YAAYliC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,CAAC,CAACA,EAAW,KAAK,YACtC,CAAK,CACF,CACH,CACA,MAAM8hC,WAAwCI,EAAwB,CACpE,YAAYliC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAcA,EAAW,WAC/B,CAAK,CACF,CACD,QAAS,CACP,MAAM7yB,EAAU,KAAK,kBACfhiB,EAAO,KAAK,KACZ+R,EAAK/R,EAAK,GAChB,IAAImL,EAAQ6W,EAAQ,SAASjQ,EAAI,CAC/B,MAAO/R,EAAK,cAAgBA,EAAK,UAClC,GAAE,MACC,OAAOmL,GAAU,WACnBA,EAAQA,IAAU,MAClB6W,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CACR,CAAO,GAEH,KAAK,UAAU,UAAU,IAAI,yBAA0B,UAAU,EACjE,MAAM5B,EAAU,SAAS,cAAc,OAAO,EAC9C,OAAA8sE,GAAqB,IAAI9sE,CAAO,EAChCA,EAAQ,aAAa,kBAAmBwI,CAAE,EAC1CxI,EAAQ,SAAWvJ,EAAK,SACxB,KAAK,aAAauJ,EAAS,KAAK,KAAK,QAAQ,EAC7CA,EAAQ,KAAO,WACfA,EAAQ,KAAOvJ,EAAK,UAChBmL,GACF5B,EAAQ,aAAa,UAAW,EAAI,EAEtCA,EAAQ,aAAa,cAAevJ,EAAK,WAAW,EACpDuJ,EAAQ,SAAW4sE,GACnB5sE,EAAQ,iBAAiB,SAAUtH,GAAS,CAC1C,KAAM,CACJ,KAAAiN,EACA,QAAA+uE,CACR,EAAUh8E,EAAM,OACV,UAAWi8E,KAAY,KAAK,mBAAmBhvE,EAAM6C,CAAE,EAAG,CACxD,MAAMosE,EAAaF,GAAWC,EAAS,cAAgBl+E,EAAK,YACxDk+E,EAAS,aACXA,EAAS,WAAW,QAAUC,GAEhCn8D,EAAQ,SAASk8D,EAAS,GAAI,CAC5B,MAAOC,CACjB,CAAS,CACF,CACDn8D,EAAQ,SAASjQ,EAAI,CACnB,MAAOksE,CACf,CAAO,CACP,CAAK,EACD10E,EAAQ,iBAAiB,YAAatH,GAAS,CAC7C,MAAM68C,EAAe9+C,EAAK,mBAAqB,MAC/CiC,EAAM,OAAO,QAAU68C,IAAiB9+C,EAAK,WACnD,CAAK,EACG,KAAK,iBAAmB,KAAK,eAC/BuJ,EAAQ,iBAAiB,oBAAqBiwE,GAAW,CACvD,MAAMD,EAAU,CACd,MAAMt3E,EAAO,CACXA,EAAM,OAAO,QAAUA,EAAM,OAAO,QAAU,MAC9C+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO9P,EAAM,OAAO,OAClC,CAAa,CACF,CACX,EACQ,KAAK,0BAA0Bs3E,EAASC,CAAO,CACvD,CAAO,EACD,KAAK,mBAAmBjwE,EAAS,KAAM,CAAC,CAAC,SAAU,UAAU,EAAG,CAAC,SAAU,QAAQ,EAAG,CAAC,QAAS,OAAO,EAAG,CAAC,OAAQ,MAAM,EAAG,CAAC,YAAa,YAAY,EAAG,CAAC,aAAc,aAAa,EAAG,CAAC,aAAc,YAAY,EAAG,CAAC,UAAW,UAAU,CAAC,EAAGtH,GAASA,EAAM,OAAO,OAAO,GAE/Q,KAAK,oBAAoBsH,CAAO,EAChC,KAAK,4BAA4BA,CAAO,EACxC,KAAK,UAAU,OAAOA,CAAO,EACtB,KAAK,SACb,CACH,CACA,MAAMmtE,WAA2CK,EAAwB,CACvE,YAAYliC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAcA,EAAW,WAC/B,CAAK,CACF,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,yBAA0B,aAAa,EACpE,MAAM7yB,EAAU,KAAK,kBACfhiB,EAAO,KAAK,KACZ+R,EAAK/R,EAAK,GAChB,IAAImL,EAAQ6W,EAAQ,SAASjQ,EAAI,CAC/B,MAAO/R,EAAK,aAAeA,EAAK,WACjC,GAAE,MAOH,GANI,OAAOmL,GAAU,WACnBA,EAAQA,IAAUnL,EAAK,YACvBgiB,EAAQ,SAASjQ,EAAI,CACnB,MAAA5G,CACR,CAAO,GAECA,EACF,UAAWizE,KAAS,KAAK,mBAAmBp+E,EAAK,UAAW+R,CAAE,EAC5DiQ,EAAQ,SAASo8D,EAAM,GAAI,CACzB,MAAO,EACjB,CAAS,EAGL,MAAM70E,EAAU,SAAS,cAAc,OAAO,EA6B9C,GA5BA8sE,GAAqB,IAAI9sE,CAAO,EAChCA,EAAQ,aAAa,kBAAmBwI,CAAE,EAC1CxI,EAAQ,SAAWvJ,EAAK,SACxB,KAAK,aAAauJ,EAAS,KAAK,KAAK,QAAQ,EAC7CA,EAAQ,KAAO,QACfA,EAAQ,KAAOvJ,EAAK,UAChBmL,GACF5B,EAAQ,aAAa,UAAW,EAAI,EAEtCA,EAAQ,SAAW4sE,GACnB5sE,EAAQ,iBAAiB,SAAUtH,GAAS,CAC1C,KAAM,CACJ,KAAAiN,EACA,QAAA+uE,CACR,EAAUh8E,EAAM,OACV,UAAWm8E,KAAS,KAAK,mBAAmBlvE,EAAM6C,CAAE,EAClDiQ,EAAQ,SAASo8D,EAAM,GAAI,CACzB,MAAO,EACjB,CAAS,EAEHp8D,EAAQ,SAASjQ,EAAI,CACnB,MAAOksE,CACf,CAAO,CACP,CAAK,EACD10E,EAAQ,iBAAiB,YAAatH,GAAS,CAC7C,MAAM68C,EAAe9+C,EAAK,kBAC1BiC,EAAM,OAAO,QAAU68C,GAAiB,MAAsCA,IAAiB9+C,EAAK,WAC1G,CAAK,EACG,KAAK,iBAAmB,KAAK,aAAc,CAC7C,MAAMq+E,EAAiBr+E,EAAK,YAC5BuJ,EAAQ,iBAAiB,oBAAqBiwE,GAAW,CACvD,MAAMD,EAAU,CACd,MAAOt3E,GAAS,CACd,MAAMg8E,EAAUI,IAAmBp8E,EAAM,OAAO,MAChD,UAAWm8E,KAAS,KAAK,mBAAmBn8E,EAAM,OAAO,IAAI,EAAG,CAC9D,MAAMk8E,EAAaF,GAAWG,EAAM,KAAOrsE,EACvCqsE,EAAM,aACRA,EAAM,WAAW,QAAUD,GAE7Bn8D,EAAQ,SAASo8D,EAAM,GAAI,CACzB,MAAOD,CACvB,CAAe,CACF,CACF,CACX,EACQ,KAAK,0BAA0B5E,EAASC,CAAO,CACvD,CAAO,EACD,KAAK,mBAAmBjwE,EAAS,KAAM,CAAC,CAAC,SAAU,UAAU,EAAG,CAAC,SAAU,QAAQ,EAAG,CAAC,QAAS,OAAO,EAAG,CAAC,OAAQ,MAAM,EAAG,CAAC,YAAa,YAAY,EAAG,CAAC,aAAc,aAAa,EAAG,CAAC,aAAc,YAAY,EAAG,CAAC,UAAW,UAAU,CAAC,EAAGtH,GAASA,EAAM,OAAO,OAAO,CAC9Q,CACD,YAAK,oBAAoBsH,CAAO,EAChC,KAAK,4BAA4BA,CAAO,EACxC,KAAK,UAAU,OAAOA,CAAO,EACtB,KAAK,SACb,CACH,CACA,MAAMqtE,WAA0CL,EAAsB,CACpE,YAAY1hC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAcA,EAAW,KAAK,aACpC,CAAK,CACF,CACD,QAAS,CACP,MAAMxP,EAAY,MAAM,SACxBA,EAAU,UAAU,IAAI,yBAA0B,YAAY,EAC9D,MAAMi5C,EAAcj5C,EAAU,UAC9B,OAAI,KAAK,iBAAmB,KAAK,cAAgBi5C,IAC/C,KAAK,4BAA4BA,CAAW,EAC5CA,EAAY,iBAAiB,oBAAqB9E,GAAW,CAC3D,KAAK,0BAA0B,GAAIA,CAAO,CAClD,CAAO,GAEIn0C,CACR,CACH,CACA,MAAMwxC,WAAsCE,EAAwB,CAClE,YAAYliC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAcA,EAAW,WAC/B,CAAK,CACF,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,wBAAwB,EACrD,MAAM7yB,EAAU,KAAK,kBACfjQ,EAAK,KAAK,KAAK,GACf0jE,EAAazzD,EAAQ,SAASjQ,EAAI,CACtC,MAAO,KAAK,KAAK,UACvB,CAAK,EACKwsE,EAAgB,SAAS,cAAc,QAAQ,EACrDlI,GAAqB,IAAIkI,CAAa,EACtCA,EAAc,aAAa,kBAAmBxsE,CAAE,EAChDwsE,EAAc,SAAW,KAAK,KAAK,SACnC,KAAK,aAAaA,EAAe,KAAK,KAAK,QAAQ,EACnDA,EAAc,KAAO,KAAK,KAAK,UAC/BA,EAAc,SAAWpI,GACzB,IAAIqI,EAAkB,KAAK,KAAK,OAAS,KAAK,KAAK,QAAQ,OAAS,EAC/D,KAAK,KAAK,QACbD,EAAc,KAAO,KAAK,KAAK,QAAQ,OACnC,KAAK,KAAK,cACZA,EAAc,SAAW,KAG7BA,EAAc,iBAAiB,YAAat8E,GAAS,CACnD,MAAM68C,EAAe,KAAK,KAAK,kBAC/B,UAAW42B,KAAU6I,EAAc,QACjC7I,EAAO,SAAWA,EAAO,QAAU52B,CAE3C,CAAK,EACD,UAAW42B,KAAU,KAAK,KAAK,QAAS,CACtC,MAAM+I,EAAgB,SAAS,cAAc,QAAQ,EACrDA,EAAc,YAAc/I,EAAO,aACnC+I,EAAc,MAAQ/I,EAAO,YACzBD,EAAW,MAAM,SAASC,EAAO,WAAW,IAC9C+I,EAAc,aAAa,WAAY,EAAI,EAC3CD,EAAkB,IAEpBD,EAAc,OAAOE,CAAa,CACnC,CACD,IAAIC,EAAmB,KACvB,GAAIF,EAAiB,CACnB,MAAMG,EAAoB,SAAS,cAAc,QAAQ,EACzDA,EAAkB,MAAQ,IAC1BA,EAAkB,aAAa,SAAU,EAAI,EAC7CA,EAAkB,aAAa,WAAY,EAAI,EAC/CJ,EAAc,QAAQI,CAAiB,EACvCD,EAAmB,IAAM,CACvBC,EAAkB,OAAM,EACxBJ,EAAc,oBAAoB,QAASG,CAAgB,EAC3DA,EAAmB,IAC3B,EACMH,EAAc,iBAAiB,QAASG,CAAgB,CACzD,CACD,MAAME,EAAWC,GAAY,CAC3B,MAAM3vE,EAAO2vE,EAAW,QAAU,cAC5B,CACJ,QAAAtsE,EACA,SAAAusE,CACD,EAAGP,EACJ,OAAKO,EAGE,MAAM,UAAU,OAAO,KAAKvsE,EAASmjE,GAAUA,EAAO,QAAQ,EAAE,IAAIA,GAAUA,EAAOxmE,CAAI,CAAC,EAFxFqD,EAAQ,gBAAkB,GAAK,KAAOA,EAAQA,EAAQ,aAAa,EAAErD,CAAI,CAGxF,EACI,IAAI6vE,EAAiBH,EAAS,EAAK,EACnC,MAAMI,EAAW/8E,GAAS,CACxB,MAAMsQ,EAAUtQ,EAAM,OAAO,QAC7B,OAAO,MAAM,UAAU,IAAI,KAAKsQ,EAASmjE,IAAW,CAClD,aAAcA,EAAO,YACrB,YAAaA,EAAO,KACrB,EAAC,CACR,EACI,OAAI,KAAK,iBAAmB,KAAK,cAC/B6I,EAAc,iBAAiB,oBAAqB/E,GAAW,CAC7D,MAAMD,EAAU,CACd,MAAMt3E,EAAO,CACXy8E,GAAA,MAAAA,IACA,MAAMvzE,EAAQlJ,EAAM,OAAO,MACrBkV,EAAS,IAAI,IAAI,MAAM,QAAQhM,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAAC,EAC7D,UAAWuqE,KAAU6I,EAAc,QACjC7I,EAAO,SAAWv+D,EAAO,IAAIu+D,EAAO,KAAK,EAE3C1zD,EAAQ,SAASjQ,EAAI,CACnB,MAAO6sE,EAAS,EAAI,CAClC,CAAa,EACDG,EAAiBH,EAAS,EAAK,CAChC,EACD,kBAAkB38E,EAAO,CACvBs8E,EAAc,SAAW,EAC1B,EACD,OAAOt8E,EAAO,CACZ,MAAMsQ,EAAUgsE,EAAc,QACxBU,EAAQh9E,EAAM,OAAO,OAC3BsQ,EAAQ0sE,CAAK,EAAE,SAAW,GAC1BV,EAAc,OAAOU,CAAK,EACtB1sE,EAAQ,OAAS,GACT,MAAM,UAAU,UAAU,KAAKA,EAASmjE,GAAUA,EAAO,QAAQ,IACjE,KACRnjE,EAAQ,CAAC,EAAE,SAAW,IAG1ByP,EAAQ,SAASjQ,EAAI,CACnB,MAAO6sE,EAAS,EAAI,EACpB,MAAOI,EAAS/8E,CAAK,CACnC,CAAa,EACD88E,EAAiBH,EAAS,EAAK,CAChC,EACD,MAAM38E,EAAO,CACX,KAAOs8E,EAAc,SAAW,GAC9BA,EAAc,OAAO,CAAC,EAExBv8D,EAAQ,SAASjQ,EAAI,CACnB,MAAO,KACP,MAAO,CAAE,CACvB,CAAa,EACDgtE,EAAiBH,EAAS,EAAK,CAChC,EACD,OAAO38E,EAAO,CACZ,KAAM,CACJ,MAAAg9E,EACA,aAAAC,EACA,YAAAjE,CACd,EAAgBh5E,EAAM,OAAO,OACXk9E,EAAcZ,EAAc,SAASU,CAAK,EAC1CR,EAAgB,SAAS,cAAc,QAAQ,EACrDA,EAAc,YAAcS,EAC5BT,EAAc,MAAQxD,EAClBkE,EACFA,EAAY,OAAOV,CAAa,EAEhCF,EAAc,OAAOE,CAAa,EAEpCz8D,EAAQ,SAASjQ,EAAI,CACnB,MAAO6sE,EAAS,EAAI,EACpB,MAAOI,EAAS/8E,CAAK,CACnC,CAAa,EACD88E,EAAiBH,EAAS,EAAK,CAChC,EACD,MAAM38E,EAAO,CACX,KAAM,CACJ,MAAAkoE,CACd,EAAgBloE,EAAM,OACV,KAAOs8E,EAAc,SAAW,GAC9BA,EAAc,OAAO,CAAC,EAExB,UAAW1nE,KAAQszD,EAAO,CACxB,KAAM,CACJ,aAAA+U,EACA,YAAAjE,CACD,EAAGpkE,EACE4nE,EAAgB,SAAS,cAAc,QAAQ,EACrDA,EAAc,YAAcS,EAC5BT,EAAc,MAAQxD,EACtBsD,EAAc,OAAOE,CAAa,CACnC,CACGF,EAAc,QAAQ,OAAS,IACjCA,EAAc,QAAQ,CAAC,EAAE,SAAW,IAEtCv8D,EAAQ,SAASjQ,EAAI,CACnB,MAAO6sE,EAAS,EAAI,EACpB,MAAOI,EAAS/8E,CAAK,CACnC,CAAa,EACD88E,EAAiBH,EAAS,EAAK,CAChC,EACD,QAAQ38E,EAAO,CACb,MAAMm9E,EAAU,IAAI,IAAIn9E,EAAM,OAAO,OAAO,EAC5C,UAAWyzE,KAAUzzE,EAAM,OAAO,QAChCyzE,EAAO,SAAW0J,EAAQ,IAAI1J,EAAO,KAAK,EAE5C1zD,EAAQ,SAASjQ,EAAI,CACnB,MAAO6sE,EAAS,EAAI,CAClC,CAAa,EACDG,EAAiBH,EAAS,EAAK,CAChC,EACD,SAAS38E,EAAO,CACdA,EAAM,OAAO,SAAW,CAACA,EAAM,OAAO,QACvC,CACX,EACQ,KAAK,0BAA0Bs3E,EAASC,CAAO,CACvD,CAAO,EACD+E,EAAc,iBAAiB,QAASt8E,GAAS,OAC/C,MAAMg5E,EAAc2D,EAAS,EAAI,EAC3BS,EAAST,EAAS,EAAK,EAC7B58D,EAAQ,SAASjQ,EAAI,CACnB,MAAOkpE,CACjB,CAAS,EACDh5E,EAAM,eAAc,GACpBk1B,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,yBAA0B,CAC5D,OAAQ,KACR,OAAQ,CACN,GAAAplB,EACA,KAAM,YACN,MAAOgtE,EACP,OAAAM,EACA,SAAUpE,EACV,WAAY,GACZ,UAAW,EACX,QAAS,EACV,CACX,EACA,CAAO,EACD,KAAK,mBAAmBsD,EAAe,KAAM,CAAC,CAAC,QAAS,OAAO,EAAG,CAAC,OAAQ,MAAM,EAAG,CAAC,YAAa,YAAY,EAAG,CAAC,aAAc,aAAa,EAAG,CAAC,aAAc,YAAY,EAAG,CAAC,UAAW,UAAU,EAAG,CAAC,QAAS,QAAQ,EAAG,CAAC,QAAS,UAAU,CAAC,EAAGt8E,GAASA,EAAM,OAAO,KAAK,GAE/Qs8E,EAAc,iBAAiB,QAAS,SAAUt8E,EAAO,CACvD+f,EAAQ,SAASjQ,EAAI,CACnB,MAAO6sE,EAAS,EAAI,CAC9B,CAAS,CACT,CAAO,EAEC,KAAK,KAAK,OACZ,KAAK,cAAcL,CAAa,EAElC,KAAK,oBAAoBA,CAAa,EACtC,KAAK,4BAA4BA,CAAa,EAC9C,KAAK,UAAU,OAAOA,CAAa,EAC5B,KAAK,SACb,CACH,CACA,MAAMvH,WAA+Be,EAAkB,CACrD,YAAYljC,EAAY,CACtB,KAAM,CACJ,KAAA70C,EACA,SAAAs/E,CACD,EAAGzqC,EACJ,MAAMA,EAAY,CAChB,aAAckjC,GAAkB,cAAc/3E,CAAI,CACxD,CAAK,EACD,KAAK,SAAWs/E,EAChB,KAAK,MAAQ,IACd,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,iBAAiB,EAC9C,MAAM1E,EAAQ,KAAK,MAAQ,IAAI2E,GAAa,CAC1C,UAAW,KAAK,UAChB,MAAO,KAAK,KAAK,MACjB,SAAU,KAAK,KAAK,SACpB,iBAAkB,KAAK,KAAK,iBAC5B,YAAa,KAAK,KAAK,YACvB,SAAU,KAAK,KAAK,SACpB,KAAM,KAAK,KAAK,KAChB,WAAY,KAAK,KAAK,YAAc,KACpC,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,KAAM,KAAK,KAAK,IACtB,CAAK,EACKC,EAAa,GACnB,UAAWj2E,KAAW,KAAK,SACzBA,EAAQ,MAAQqxE,EAChBrxE,EAAQ,UAAU,aAAe,SACjCi2E,EAAW,KAAKj2E,EAAQ,KAAK,EAAE,EAC/BA,EAAQ,iBAAgB,EAE1B,YAAK,UAAU,aAAa,gBAAiBi2E,EAAW,IAAIztE,GAAM,GAAGooB,EAAgB,GAAGpoB,CAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAChG,KAAK,SACb,CACH,oHACA,MAAMwtE,EAAa,CAoBjB,YAAY,CACV,UAAAl6C,EACA,MAAAvH,EACA,SAAAwhD,EACA,SAAA9G,EACA,iBAAAiH,EACA,YAAAhH,EACA,SAAAC,EACA,OAAA52C,EACA,KAAAzJ,EACA,WAAAqnD,EACA,KAAAC,CACJ,EAAK,CAoEH5lD,EAAA,KAAI6lD,IAQJ7lD,EAAA,KAAI8lD,IAGJ9lD,EAAA,KAAI+lD,IAGJ/lD,EAAA,KAAAgmD,IA+CAhmD,EAAA,KAAAimD,IAuCAjmD,EAAA,KAAAkmD,IAsCAlmD,EAAA,KAAAmmD,IAYAnmD,EAAA,KAAAomD,IAYApmD,EAAA,KAAAqmD,IArQArmD,EAAA,KAAAsmD,GAAgBjnD,EAAA,KAAK4mD,GAAAM,IAAS,KAAK,IAAI,GACvCvmD,EAAA,KAAAwmD,GAAannD,EAAA,KAAKgnD,GAAAI,IAAM,KAAK,IAAI,GACjCzmD,EAAA,KAAA0mD,GAAarnD,EAAA,KAAK+mD,GAAAO,IAAM,KAAK,IAAI,GACjC3mD,EAAA,KAAA4mD,GAAevnD,EAAA,KAAK8mD,GAAAU,IAAQ,KAAK,IAAI,GACrC7mD,EAAA,KAAA8mD,GAAS,MACT9mD,EAAA,KAAAiQ,GAAa,MACbjQ,EAAA,KAAA+mD,GAAe,MACf/mD,EAAA,KAAAgnD,GAAW,MACXhnD,EAAA,KAAAinD,GAAY,MACZjnD,EAAA,KAAAknD,GAAU,MACVlnD,EAAA,KAAAmnD,GAAc,MACdnnD,EAAA,KAAAonD,GAAU,IACVpnD,EAAA,KAAAqnD,GAAS,MACTrnD,EAAA,KAAAiK,GAAY,MACZjK,EAAA,KAAAsnD,GAAQ,MACRtnD,EAAA,KAAAunD,GAAY,MACZvnD,EAAA,KAAAwnD,GAAY,MACZxnD,EAAA,KAAAs+C,GAAW,MACXt+C,EAAA,KAAAynD,GAAc,UAcZtkD,EAAA,KAAK8M,GAAa3E,GAClBnI,EAAA,KAAKqkD,GAAY/I,GACjBt7C,EAAA,KAAK4jD,GAAerI,GACpBv7C,EAAA,KAAKokD,GAAY5I,GACjBx7C,EAAA,KAAK+jD,GAAUn/C,GACf5E,EAAA,KAAK2jD,GAAS/iD,GACdZ,EAAA,KAAKmkD,GAAQhpD,GACb6E,EAAA,KAAKgkD,GAAcxB,GACnBxiD,EAAA,KAAK8jD,GAAY1B,GACjBpiD,EAAA,KAAK6jD,GAAWnuD,GAAc,aAAa6sD,CAAgB,GAC3D,KAAK,QAAUH,EAAS,QAAQz5E,GAAKA,EAAE,0BAAyB,CAAE,EAClE,UAAW0D,KAAW,KAAK,QACzBA,EAAQ,iBAAiB,QAASyzB,EAAA,KAAK2jD,GAAY,EACnDp3E,EAAQ,iBAAiB,aAAcyzB,EAAA,KAAKyjD,GAAU,EACtDl3E,EAAQ,iBAAiB,aAAcyzB,EAAA,KAAKujD,GAAU,EACtDh3E,EAAQ,UAAU,IAAI,kBAAkB,EAE1C,UAAWA,KAAW+1E,GACpBnoD,EAAA5tB,EAAQ,YAAR,MAAA4tB,EAAmB,iBAAiB,UAAW6F,EAAA,KAAKqjD,KAEtDrjD,EAAA,KAAKgN,IAAW,OAAS,GACrB21C,GACFvmD,EAAA,KAAK8mD,GAAAU,IAAL,UAEH,CACD,QAAS,CACP,GAAI5jD,EAAA,KAAKokD,IACP,OAEF,MAAMxG,EAAQ19C,EAAA,KAAKkkD,GAAS,SAAS,cAAc,KAAK,GAExD,GADAxG,EAAM,UAAY,QACd59C,EAAA,KAAK6jD,IAAQ,CACf,MAAMY,EAAY7G,EAAM,MAAM,aAAe5kE,GAAK,aAAa,GAAGgnB,EAAA,KAAK6jD,GAAM,EAC7EjG,EAAM,MAAM,gBAAkB,sBAAsB6G,CAAS,cAC9D,CACD,MAAMC,EAAS,SAAS,cAAc,MAAM,EAC5CA,EAAO,UAAY,SACnB,MAAMC,EAAQ,SAAS,cAAc,IAAI,EAOzC,GANAD,EAAO,OAAOC,CAAK,EAClB,CACC,IAAKA,EAAM,IACX,IAAKA,EAAM,WACjB,EAAQ3kD,EAAA,KAAKukD,IACT3G,EAAM,OAAO8G,CAAM,EACf1kD,EAAA,KAAK+jD,IAAU,CACjB,MAAMtB,EAAmB,SAAS,cAAc,MAAM,EACtDA,EAAiB,UAAU,IAAI,WAAW,EAC1CA,EAAiB,aAAa,eAAgB,mCAAmC,EACjFA,EAAiB,aAAa,iBAAkB,KAAK,UAAU,CAC7D,QAASziD,EAAA,KAAK+jD,IAAS,QAAS,CACjC,EAAC,EACFW,EAAO,OAAOjC,CAAgB,CAC/B,CACD,MAAMjK,EAAOx4C,EAAA,KAAK4iD,GAAAgC,IAClB,GAAIpM,EACFhiD,GAAS,OAAO,CACd,QAASgiD,EACT,OAAQ,WACR,IAAKoF,CACb,CAAO,EACDA,EAAM,UAAU,UAAU,IAAI,WAAY,cAAc,MACnD,CACL,MAAMiH,EAAW,KAAK,gBAAgB7kD,EAAA,KAAK8jD,GAAY,EACvDlG,EAAM,OAAOiH,CAAQ,CACtB,CACD7kD,EAAA,KAAKgN,IAAW,OAAO4wC,CAAK,CAC7B,CA6CD,gBAAgB,CACd,IAAAlkD,EACA,IAAAorD,CACJ,EAAK,CACD,MAAM94E,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,UAAU,IAAI,cAAc,EAC9BA,EAAE,IAAM84E,EACR,MAAMC,EAAQrrD,EAAI,MAAM,cAAc,EACtC,QAASh0B,EAAI,EAAG05B,EAAK2lD,EAAM,OAAQr/E,EAAI05B,EAAI,EAAE15B,EAAG,CAC9C,MAAMs/E,EAAOD,EAAMr/E,CAAC,EACpBsG,EAAE,OAAO,SAAS,eAAeg5E,CAAI,CAAC,EAClCt/E,EAAI05B,EAAK,GACXpzB,EAAE,OAAO,SAAS,cAAc,IAAI,CAAC,CAExC,CACD,OAAOA,CACR,CASD,aAAa,CACX,KAAAqvB,EACA,aAAA4pD,CACJ,EAAK,OACDjlD,EAAA,KAAKq7C,KAALn7C,EAAA,KAAKm7C,GAAa,CAChB,YAAar7C,EAAA,KAAK8jD,IAClB,SAAU9jD,EAAA,KAAKskD,GACrB,GACQjpD,GACF6E,EAAA,KAAK8G,GAAY,MAEfi+C,IACF/kD,EAAA,KAAKokD,GAAYloD,EAAA,KAAK2mD,GAAAmC,IAAL,UAAuBD,IACxC/kD,EAAA,KAAK4jD,GAAe,QAEtB3pD,EAAA6F,EAAA,KAAKokD,MAAL,MAAAjqD,EAAa,SACb+F,EAAA,KAAKkkD,GAAS,KACf,CACD,aAAc,OACPpkD,EAAA,KAAKq7C,MAGT,CACC,YAAa31C,GAAA,KAAAo+C,IAAA,EACb,SAAUp+C,GAAA,KAAA4+C,IAAA,CAChB,EAAQtkD,EAAA,KAAKq7C,IACTn7C,EAAA,KAAKm7C,GAAW,OAChBlhD,EAAA6F,EAAA,KAAKokD,MAAL,MAAAjqD,EAAa,SACb+F,EAAA,KAAKkkD,GAAS,MACdlkD,EAAA,KAAK8G,GAAY,MAClB,CAuED,WAAY,CACV9G,EAAA,KAAKskD,GAAc,KAAK,WACnBxkD,EAAA,KAAKwkD,MAGVxkD,EAAA,KAAKgN,IAAW,OAAS,GAC1B,CACD,WAAY,CACLhN,EAAA,KAAKwkD,MAGLxkD,EAAA,KAAKokD,KACRhoD,EAAA,KAAK+mD,GAAAO,IAAL,WAEFxjD,EAAA,KAAKskD,GAAc,IACnBxkD,EAAA,KAAKgN,IAAW,OAAS,GAC1B,CACD,IAAI,WAAY,CACd,OAAOhN,EAAA,KAAKgN,IAAW,SAAW,EACnC,CACH,CAjSEq2C,GAAA,YACAE,GAAA,YACAE,GAAA,YACAE,GAAA,YACAE,GAAA,YACA72C,GAAA,YACA82C,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAp9C,GAAA,YACAq9C,GAAA,YACAC,GAAA,YACAC,GAAA,YACAlJ,GAAA,YACAmJ,GAAA,YAiFI5B,GAAA,YAAAgC,GAAK,UAAG,CACV,MAAMlJ,EAAW17C,EAAA,KAAKskD,IAChB7I,EAAcz7C,EAAA,KAAK8jD,IACzB,OAAIpI,GAAA,MAAAA,EAAU,MAAQ,EAACD,GAAA,MAAAA,EAAa,MAAOA,EAAY,MAAQC,EAAS,MAC/D17C,EAAA,KAAKskD,IAAU,MAAQ,IAGjC,EACGzB,GAAA,YAAAsC,GAAS,UAAG,WACd,QAAOp3C,GAAA7T,GAAAC,EAAA6F,EAAA,KAAK4iD,GAAAgC,MAAL,YAAAzqD,EAAY,aAAZ,YAAAD,EAAwB,QAAxB,YAAA6T,EAA+B,WAAY,CACnD,EACG+0C,GAAA,YAAAsC,GAAU,UAAG,WACf,QAAOr3C,GAAA7T,GAAAC,EAAA6F,EAAA,KAAK4iD,GAAAgC,MAAL,YAAAzqD,EAAY,aAAZ,YAAAD,EAAwB,QAAxB,YAAA6T,EAA+B,QAAS,IAChD,EACDg1C,GAAA,YAAAmC,GAAiB,SAACn0E,EAAM,CACtB,MAAMs0E,EAAa,GACbJ,EAAe,CACnB,IAAKl0E,EACL,KAAM,CACJ,KAAM,MACN,WAAY,CACV,IAAK,MACN,EACD,SAAU,CAAC,CACT,KAAM,IACN,SAAUs0E,CACpB,CAAS,CACF,CACP,EACUC,EAAiB,CACrB,MAAO,CACL,MAAOtlD,EAAA,KAAK8iD,GAAAsC,IACZ,SAAUplD,EAAA,KAAK6iD,GAAAsC,IAAY,QAAQnlD,EAAA,KAAK6iD,GAAAsC,GAAS,kCAAoC,EACtF,CACP,EACI,UAAWH,KAAQj0E,EAAK,MAAM;AAAA,CAAI,EAChCs0E,EAAW,KAAK,CACd,KAAM,OACN,MAAOL,EACP,WAAYM,CACpB,CAAO,EAEH,OAAOL,CACR,EAkBDjC,GAAA,YAAAM,GAAQ,SAACr+E,EAAO,CACVA,EAAM,QAAUA,EAAM,UAAYA,EAAM,SAAWA,EAAM,UAGzDA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,UAAY+6B,EAAA,KAAKmkD,MAC1D/nD,EAAA,KAAK8mD,GAAAU,IAAL,UAEH,EAgCDX,GAAA,YAAAsC,GAAY,UAAG,CACb,GAAIvlD,EAAA,KAAKgH,MAAc,KACrB,OAEF,KAAM,CACJ,KAAM,CACJ,KAAAv7B,CACD,EACD,SAAU,CACR,QAAS,CACP,UAAAi2B,EACA,WAAAC,EACA,MAAA4Y,EACA,MAAAC,CACD,CACF,CACP,EAAQxa,EAAA,KAAKikD,IACT,IAAIuB,EAAgB,CAAC,CAACxlD,EAAA,KAAKkkD,IACvB7oD,EAAOmqD,EAAgBxlD,EAAA,KAAKkkD,IAAclkD,EAAA,KAAKqkD,IACnD,UAAW93E,KAAWyzB,EAAA,KAAKgkD,IACzB,GAAI,CAAC3oD,GAAQriB,GAAK,UAAUzM,EAAQ,KAAK,KAAM8uB,CAAI,IAAM,KAAM,CAC7DA,EAAO9uB,EAAQ,KAAK,KACpBi5E,EAAgB,GAChB,KACD,CAEH,MAAMC,EAAiBzsE,GAAK,cAAc,CAACqiB,EAAK,CAAC,EAAG5vB,EAAK,CAAC,EAAI4vB,EAAK,CAAC,EAAI5vB,EAAK,CAAC,EAAG4vB,EAAK,CAAC,EAAG5vB,EAAK,CAAC,EAAI4vB,EAAK,CAAC,EAAI5vB,EAAK,CAAC,CAAC,CAAC,EAChHi6E,EAAoC,EACpCrzC,EAAcmzC,EAAgBnqD,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAIqqD,EAAoC,EACtFC,EAAYF,EAAe,CAAC,EAAIpzC,EAChCuzC,EAAWH,EAAe,CAAC,EACjCvlD,EAAA,KAAK8G,GAAY,CAAC,KAAO2+C,EAAYprC,GAAS7Y,EAAW,KAAOkkD,EAAWprC,GAAS7Y,CAAU,GAC9F,KAAM,CACJ,MAAAC,CACN,EAAQ5B,EAAA,KAAKgN,IACTpL,EAAM,KAAO,GAAG5B,EAAA,KAAKgH,IAAU,CAAC,CAAC,IACjCpF,EAAM,IAAM,GAAG5B,EAAA,KAAKgH,IAAU,CAAC,CAAC,GACjC,EACDk8C,GAAA,YAAAU,GAAO,UAAG,CACR1jD,EAAA,KAAKikD,GAAU,CAACnkD,EAAA,KAAKmkD,KACjBnkD,EAAA,KAAKmkD,KACP/nD,EAAA,KAAK+mD,GAAAO,IAAL,WACA1jD,EAAA,KAAKgN,IAAW,iBAAiB,QAAShN,EAAA,KAAK2jD,GAAY,EAC3D3jD,EAAA,KAAKgN,IAAW,iBAAiB,UAAWhN,EAAA,KAAKqjD,GAAa,IAE9DjnD,EAAA,KAAKgnD,GAAAI,IAAL,WACAxjD,EAAA,KAAKgN,IAAW,oBAAoB,QAAShN,EAAA,KAAK2jD,GAAY,EAC9D3jD,EAAA,KAAKgN,IAAW,oBAAoB,UAAWhN,EAAA,KAAKqjD,GAAa,EAEpE,EACDF,GAAA,YAAAO,GAAK,UAAG,CACD1jD,EAAA,KAAKokD,KACR,KAAK,OAAM,EAER,KAAK,UAICpkD,EAAA,KAAKmkD,KACdnkD,EAAA,KAAKgN,IAAW,UAAU,IAAI,SAAS,GAJvC5Q,EAAA,KAAK6mD,GAAAsC,IAAL,WACAvlD,EAAA,KAAKgN,IAAW,OAAS,GACzBhN,EAAA,KAAKgN,IAAW,MAAM,OAAS,SAAShN,EAAA,KAAKgN,IAAW,MAAM,MAAM,EAAI,IAI3E,EACDo2C,GAAA,YAAAI,GAAK,UAAG,CACNxjD,EAAA,KAAKgN,IAAW,UAAU,OAAO,SAAS,EACtC,EAAAhN,EAAA,KAAKmkD,KAAW,CAAC,KAAK,aAG1BnkD,EAAA,KAAKgN,IAAW,OAAS,GACzBhN,EAAA,KAAKgN,IAAW,MAAM,OAAS,SAAShN,EAAA,KAAKgN,IAAW,MAAM,MAAM,EAAI,IACzE,EAsBH,MAAMitC,WAAkCc,EAAkB,CACxD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EACD,KAAK,YAAcA,EAAW,KAAK,YACnC,KAAK,aAAeA,EAAW,KAAK,aACpC,KAAK,qBAAuBjjB,GAAqB,QAClD,CACD,QAAS,CAEP,GADA,KAAK,UAAU,UAAU,IAAI,oBAAoB,EAC7C,KAAK,YAAa,CACpB,MAAM0oB,EAAU,SAAS,cAAc,KAAK,EAC5CA,EAAQ,UAAU,IAAI,uBAAuB,EAC7CA,EAAQ,aAAa,OAAQ,SAAS,EACtC,UAAW0nC,KAAQ,KAAK,YAAa,CACnC,MAAMa,EAAW,SAAS,cAAc,MAAM,EAC9CA,EAAS,YAAcb,EACvB1nC,EAAQ,OAAOuoC,CAAQ,CACxB,CACD,KAAK,UAAU,OAAOvoC,CAAO,CAC9B,CACD,MAAI,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,mBAAkB,EAChB,KAAK,SACb,CACH,QACA,MAAM48B,WAA8Ba,EAAkB,CAEpD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EALH9a,EAAA,KAAA+oD,GAAQ,KAMP,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,gBAAgB,EAC7C,KAAM,CACJ,KAAA9iF,EACA,MAAA4E,EACA,OAAAR,CACD,EAAG,KACE2+B,EAAM,KAAK,WAAW,OAAOn+B,EAAOR,EAAQ,EAAI,EAChD49E,EAAO9kD,EAAA,KAAK4lD,GAAQ,KAAK,WAAW,cAAc,UAAU,GAClE,OAAAd,EAAK,aAAa,KAAMhiF,EAAK,KAAK,CAAC,EAAIA,EAAK,gBAAgB,CAAC,CAAC,EAC9DgiF,EAAK,aAAa,KAAMhiF,EAAK,KAAK,CAAC,EAAIA,EAAK,gBAAgB,CAAC,CAAC,EAC9DgiF,EAAK,aAAa,KAAMhiF,EAAK,KAAK,CAAC,EAAIA,EAAK,gBAAgB,CAAC,CAAC,EAC9DgiF,EAAK,aAAa,KAAMhiF,EAAK,KAAK,CAAC,EAAIA,EAAK,gBAAgB,CAAC,CAAC,EAC9DgiF,EAAK,aAAa,eAAgBhiF,EAAK,YAAY,OAAS,CAAC,EAC7DgiF,EAAK,aAAa,SAAU,aAAa,EACzCA,EAAK,aAAa,OAAQ,aAAa,EACvCj/C,EAAI,OAAOi/C,CAAI,EACf,KAAK,UAAU,OAAOj/C,CAAG,EACrB,CAAC/iC,EAAK,UAAY,KAAK,cACzB,KAAK,aAAY,EAEZ,KAAK,SACb,CACD,2BAA4B,CAC1B,OAAOg9B,EAAA,KAAK8lD,GACb,CACD,kBAAmB,CACjB,KAAK,UAAU,UAAU,IAAI,eAAe,CAC7C,CACH,CApCEA,GAAA,mBAqCF,MAAM3L,WAAgCY,EAAkB,CAEtD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EALH9a,EAAA,KAAAgpD,GAAU,KAMT,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,kBAAkB,EAC/C,KAAM,CACJ,KAAA/iF,EACA,MAAA4E,EACA,OAAAR,CACD,EAAG,KACE2+B,EAAM,KAAK,WAAW,OAAOn+B,EAAOR,EAAQ,EAAI,EAChDk2E,EAAct6E,EAAK,YAAY,MAC/BgjF,EAAS9lD,EAAA,KAAK6lD,GAAU,KAAK,WAAW,cAAc,UAAU,GACtE,OAAAC,EAAO,aAAa,IAAK1I,EAAc,CAAC,EACxC0I,EAAO,aAAa,IAAK1I,EAAc,CAAC,EACxC0I,EAAO,aAAa,QAASp+E,EAAQ01E,CAAW,EAChD0I,EAAO,aAAa,SAAU5+E,EAASk2E,CAAW,EAClD0I,EAAO,aAAa,eAAgB1I,GAAe,CAAC,EACpD0I,EAAO,aAAa,SAAU,aAAa,EAC3CA,EAAO,aAAa,OAAQ,aAAa,EACzCjgD,EAAI,OAAOigD,CAAM,EACjB,KAAK,UAAU,OAAOjgD,CAAG,EACrB,CAAC/iC,EAAK,UAAY,KAAK,cACzB,KAAK,aAAY,EAEZ,KAAK,SACb,CACD,2BAA4B,CAC1B,OAAOg9B,EAAA,KAAK+lD,GACb,CACD,kBAAmB,CACjB,KAAK,UAAU,UAAU,IAAI,eAAe,CAC7C,CACH,CArCEA,GAAA,mBAsCF,MAAM3L,WAAgCW,EAAkB,CAEtD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EALH9a,EAAA,KAAAkpD,GAAU,KAMT,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,kBAAkB,EAC/C,KAAM,CACJ,KAAAjjF,EACA,MAAA4E,EACA,OAAAR,CACD,EAAG,KACE2+B,EAAM,KAAK,WAAW,OAAOn+B,EAAOR,EAAQ,EAAI,EAChDk2E,EAAct6E,EAAK,YAAY,MAC/BkjF,EAAShmD,EAAA,KAAK+lD,GAAU,KAAK,WAAW,cAAc,aAAa,GACzE,OAAAC,EAAO,aAAa,KAAMt+E,EAAQ,CAAC,EACnCs+E,EAAO,aAAa,KAAM9+E,EAAS,CAAC,EACpC8+E,EAAO,aAAa,KAAMt+E,EAAQ,EAAI01E,EAAc,CAAC,EACrD4I,EAAO,aAAa,KAAM9+E,EAAS,EAAIk2E,EAAc,CAAC,EACtD4I,EAAO,aAAa,eAAgB5I,GAAe,CAAC,EACpD4I,EAAO,aAAa,SAAU,aAAa,EAC3CA,EAAO,aAAa,OAAQ,aAAa,EACzCngD,EAAI,OAAOmgD,CAAM,EACjB,KAAK,UAAU,OAAOngD,CAAG,EACrB,CAAC/iC,EAAK,UAAY,KAAK,cACzB,KAAK,aAAY,EAEZ,KAAK,SACb,CACD,2BAA4B,CAC1B,OAAOg9B,EAAA,KAAKimD,GACb,CACD,kBAAmB,CACjB,KAAK,UAAU,UAAU,IAAI,eAAe,CAC7C,CACH,CArCEA,GAAA,mBAsCF,MAAM5L,WAAkCU,EAAkB,CAExD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EALH9a,EAAA,KAAAopD,GAAY,MAMV,KAAK,mBAAqB,qBAC1B,KAAK,eAAiB,cACvB,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,KAAK,kBAAkB,EACpD,KAAM,CACJ,KAAM,CACJ,KAAA9qD,EACA,SAAA+qD,EACA,YAAAC,EACA,SAAAC,CACD,EACD,MAAA1+E,EACA,OAAAR,CACD,EAAG,KACJ,GAAI,CAACg/E,EACH,OAAO,KAAK,UAEd,MAAMrgD,EAAM,KAAK,WAAW,OAAOn+B,EAAOR,EAAQ,EAAI,EACtD,IAAIivD,EAAS,GACb,QAAS3wD,EAAI,EAAG05B,EAAKgnD,EAAS,OAAQ1gF,EAAI05B,EAAI15B,GAAK,EAAG,CACpD,MAAMurB,EAAIm1D,EAAS1gF,CAAC,EAAI21B,EAAK,CAAC,EACxB7J,EAAI6J,EAAK,CAAC,EAAI+qD,EAAS1gF,EAAI,CAAC,EAClC2wD,EAAO,KAAK,GAAGplC,CAAC,IAAIO,CAAC,EAAE,CACxB,CACD6kC,EAASA,EAAO,KAAK,GAAG,EACxB,MAAMkwB,EAAWrmD,EAAA,KAAKimD,GAAY,KAAK,WAAW,cAAc,KAAK,cAAc,GACnF,OAAAI,EAAS,aAAa,SAAUlwB,CAAM,EACtCkwB,EAAS,aAAa,eAAgBF,EAAY,OAAS,CAAC,EAC5DE,EAAS,aAAa,SAAU,aAAa,EAC7CA,EAAS,aAAa,OAAQ,aAAa,EAC3CxgD,EAAI,OAAOwgD,CAAQ,EACnB,KAAK,UAAU,OAAOxgD,CAAG,EACrB,CAACugD,GAAY,KAAK,cACpB,KAAK,aAAY,EAEZ,KAAK,SACb,CACD,2BAA4B,CAC1B,OAAOtmD,EAAA,KAAKmmD,GACb,CACD,kBAAmB,CACjB,KAAK,UAAU,UAAU,IAAI,eAAe,CAC7C,CACH,CAlDEA,GAAA,YAmDF,MAAM3L,WAAiCH,EAA0B,CAC/D,YAAYxiC,EAAY,CACtB,MAAMA,CAAU,EAChB,KAAK,mBAAqB,oBAC1B,KAAK,eAAiB,aACvB,CACH,CACA,MAAMyiC,WAA+BS,EAAkB,CACrD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,CACF,CACD,QAAS,CACP,YAAK,UAAU,UAAU,IAAI,iBAAiB,EAC1C,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEZ,KAAK,SACb,CACH,iBACA,MAAM0iC,WAA6BQ,EAAkB,CAGnD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EAKH9a,EAAA,KAAAypD,IAXAzpD,EAAA,KAAA0pD,GAAyB,MACzB1pD,EAAA,KAAA2pD,GAAa,IAMX,KAAK,mBAAqB,gBAC1B,KAAK,eAAiB,eACtB,KAAK,qBAAuB,KAAK,KAAK,KAAO,eAAiB9xD,GAAqB,UAAYA,GAAqB,GACrH,CA6BD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,KAAK,kBAAkB,EACpD,KAAM,CACJ,KAAM,CACJ,KAAAyG,EACA,SAAA+C,EACA,SAAAuoD,EACA,YAAAN,EACA,SAAAC,CACD,CACF,EAAG,KACE,CACJ,UAAAjsD,EACA,MAAAzyB,EACA,OAAAR,CACD,EAAGg1B,EAAA,KAAKoqD,GAAAI,IAAL,UAAmBxoD,EAAU/C,GAC3B0K,EAAM,KAAK,WAAW,OAAOn+B,EAAOR,EAAQ,EAAI,EAChDmqB,EAAI2O,EAAA,KAAKumD,GAAyB,KAAK,WAAW,cAAc,OAAO,GAC7E1gD,EAAI,OAAOxU,CAAC,EACZA,EAAE,aAAa,eAAgB80D,EAAY,OAAS,CAAC,EACrD90D,EAAE,aAAa,iBAAkB,OAAO,EACxCA,EAAE,aAAa,kBAAmB,OAAO,EACzCA,EAAE,aAAa,oBAAqB,EAAE,EACtCA,EAAE,aAAa,SAAU,aAAa,EACtCA,EAAE,aAAa,OAAQ,aAAa,EACpCA,EAAE,aAAa,YAAa8I,CAAS,EACrC,QAAS30B,EAAI,EAAG05B,EAAKunD,EAAS,OAAQjhF,EAAI05B,EAAI15B,IAAK,CACjD,MAAM6gF,EAAW,KAAK,WAAW,cAAc,KAAK,cAAc,EAClEvmD,EAAA,KAAK0mD,IAAW,KAAKH,CAAQ,EAC7BA,EAAS,aAAa,SAAUI,EAASjhF,CAAC,EAAE,KAAK,GAAG,CAAC,EACrD6rB,EAAE,OAAOg1D,CAAQ,CAClB,CACD,MAAI,CAACD,GAAY,KAAK,cACpB,KAAK,aAAY,EAEnB,KAAK,UAAU,OAAOvgD,CAAG,EACzB,KAAK,mBAAkB,EAChB,KAAK,SACb,CACD,aAAa16B,EAAQ,CACnB,MAAM,aAAaA,CAAM,EACzB,KAAM,CACJ,UAAAw7E,EACA,OAAAxwB,EACA,KAAAh7B,CACD,EAAGhwB,EACEkmB,EAAIyO,EAAA,KAAKymD,IAIf,GAHII,GAAa,GACft1D,EAAE,aAAa,eAAgBs1D,GAAa,CAAC,EAE3CxwB,EACF,QAAS3wD,EAAI,EAAG05B,EAAKY,EAAA,KAAK0mD,IAAW,OAAQhhF,EAAI05B,EAAI15B,IACnDs6B,EAAA,KAAK0mD,IAAWhhF,CAAC,EAAE,aAAa,SAAU2wD,EAAO3wD,CAAC,EAAE,KAAK,GAAG,CAAC,EAGjE,GAAI21B,EAAM,CACR,KAAM,CACJ,UAAAhB,EACA,MAAAzyB,EACA,OAAAR,CACR,EAAUg1B,EAAA,KAAKoqD,GAAAI,IAAL,UAAmB,KAAK,KAAK,SAAUvrD,GAC9B9J,EAAE,cACV,aAAa,UAAW,OAAO3pB,CAAK,IAAIR,CAAM,EAAE,EACrDmqB,EAAE,aAAa,YAAa8I,CAAS,CACtC,CACF,CACD,2BAA4B,CAC1B,OAAO2F,EAAA,KAAK0mD,GACb,CACD,kBAAmB,CACjB,KAAK,UAAU,UAAU,IAAI,eAAe,CAC7C,CACH,CA/GED,GAAA,YACAC,GAAA,YAUAF,GAAA,YAAAI,GAAa,SAACxoD,EAAU/C,EAAM,CAC5B,OAAQ+C,EAAQ,CACd,IAAK,IACH,MAAO,CACL,UAAW,wBAAwB,CAAC/C,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,gBACtD,MAAOA,EAAK,CAAC,EAAIA,EAAK,CAAC,EACvB,OAAQA,EAAK,CAAC,EAAIA,EAAK,CAAC,CAClC,EACM,IAAK,KACH,MAAO,CACL,UAAW,yBAAyB,CAACA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,gBACvD,MAAOA,EAAK,CAAC,EAAIA,EAAK,CAAC,EACvB,OAAQA,EAAK,CAAC,EAAIA,EAAK,CAAC,CAClC,EACM,IAAK,KACH,MAAO,CACL,UAAW,yBAAyB,CAACA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,gBACvD,MAAOA,EAAK,CAAC,EAAIA,EAAK,CAAC,EACvB,OAAQA,EAAK,CAAC,EAAIA,EAAK,CAAC,CAClC,EACM,QACE,MAAO,CACL,UAAW,aAAa,CAACA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,gBAC3C,MAAOA,EAAK,CAAC,EAAIA,EAAK,CAAC,EACvB,OAAQA,EAAK,CAAC,EAAIA,EAAK,CAAC,CAClC,CACK,CACF,EA0EH,MAAMo/C,WAAmCM,EAAkB,CACzD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,GACd,qBAAsB,EAC5B,CAAK,EACD,KAAK,qBAAuBjjB,GAAqB,SAClD,CACD,QAAS,CACP,MAAI,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,UAAU,UAAU,IAAI,qBAAqB,EAClD,KAAK,mBAAkB,EAChB,KAAK,SACb,CACH,CACA,MAAM8lD,WAAmCK,EAAkB,CACzD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,GACd,qBAAsB,EAC5B,CAAK,CACF,CACD,QAAS,CACP,MAAI,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,UAAU,UAAU,IAAI,qBAAqB,EAC3C,KAAK,SACb,CACH,CACA,MAAM8iC,WAAkCI,EAAkB,CACxD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,GACd,qBAAsB,EAC5B,CAAK,CACF,CACD,QAAS,CACP,MAAI,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,UAAU,UAAU,IAAI,oBAAoB,EAC1C,KAAK,SACb,CACH,CACA,MAAM+iC,WAAmCG,EAAkB,CACzD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,GACd,qBAAsB,EAC5B,CAAK,CACF,CACD,QAAS,CACP,MAAI,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,UAAU,UAAU,IAAI,qBAAqB,EAC3C,KAAK,SACb,CACH,CACA,MAAMgjC,WAA+BE,EAAkB,CACrD,YAAYljC,EAAY,CACtB,MAAMA,EAAY,CAChB,aAAc,GACd,aAAc,EACpB,CAAK,EACD,KAAK,qBAAuBjjB,GAAqB,KAClD,CACD,QAAS,CACP,YAAK,UAAU,UAAU,IAAI,iBAAiB,EAC9C,KAAK,UAAU,aAAa,OAAQ,KAAK,EACrC,CAAC,KAAK,KAAK,UAAY,KAAK,cAC9B,KAAK,aAAY,EAEnB,KAAK,mBAAkB,EAChB,KAAK,SACb,CACH,cACA,MAAMkmD,WAAwCC,EAAkB,CAE9D,YAAYljC,EAAY,OACtB,MAAMA,EAAY,CAChB,aAAc,EACpB,CAAK,EAmDH9a,EAAA,KAAA+pD,IAvDA/pD,EAAA,KAAAgqD,GAAW,MAKT,KAAM,CACJ,KAAAjjF,CACN,EAAQ,KAAK,KACT,KAAK,SAAWA,EAAK,SACrB,KAAK,QAAUA,EAAK,SACpBq2B,EAAA,KAAK,YAAY,WAAjB,MAAAA,EAA2B,SAAS,2BAA4B,CAC9D,OAAQ,KACR,GAAGr2B,CACT,EACG,CACD,QAAS,CACP,KAAK,UAAU,UAAU,IAAI,0BAA0B,EACvD,KAAM,CACJ,UAAAukC,EACA,KAAArlC,CACD,EAAG,KACJ,IAAIgkF,EACAhkF,EAAK,eAAiBA,EAAK,YAAc,EAC3CgkF,EAAU,SAAS,cAAc,KAAK,GAEtCA,EAAU,SAAS,cAAc,KAAK,EACtCA,EAAQ,IAAM,GAAG,KAAK,kBAAkB,cAAc,aAAa,KAAKhkF,EAAK,IAAI,EAAI,YAAc,SAAS,OACxGA,EAAK,WAAaA,EAAK,UAAY,IACrCgkF,EAAQ,MAAQ,mBAAmB,KAAK,MAAMhkF,EAAK,UAAY,GAAG,CAAC,QAGvEgkF,EAAQ,iBAAiB,WAAY5qD,EAAA,KAAK0qD,GAAAG,IAAU,KAAK,IAAI,CAAC,EAC9D/mD,EAAA,KAAK6mD,GAAWC,GAChB,KAAM,CACJ,MAAAr/C,CACN,EAAQvS,GAAiB,SACrB,OAAAiT,EAAU,iBAAiB,UAAW8E,GAAO,CACvCA,EAAI,MAAQ,UAAYxF,EAAQwF,EAAI,QAAUA,EAAI,UACpD/Q,EAAA,KAAK0qD,GAAAG,IAAL,UAER,CAAK,EACG,CAACjkF,EAAK,UAAY,KAAK,aACzB,KAAK,aAAY,EAEjBgkF,EAAQ,UAAU,IAAI,kBAAkB,EAE1C3+C,EAAU,OAAO2+C,CAAO,EACjB3+C,CACR,CACD,2BAA4B,CAC1B,OAAOrI,EAAA,KAAK+mD,GACb,CACD,kBAAmB,CACjB,KAAK,UAAU,UAAU,IAAI,eAAe,CAC7C,CAIH,CA1DEA,GAAA,YAuDAD,GAAA,YAAAG,GAAS,UAAG,QACV9sD,EAAA,KAAK,kBAAL,MAAAA,EAAsB,mBAAmB,KAAK,QAAS,KAAK,SAC7D,8BAEH,MAAM+sD,GAAN,MAAMA,EAAgB,CAKpB,YAAY,CACV,IAAA5lD,EACA,qBAAA6lD,EACA,oBAAAjuB,EACA,0BAAAkuB,EACA,KAAAj8E,EACA,SAAAo2B,EACA,gBAAA8lD,CACJ,EAAK,CAaHtqD,EAAA,KAAMuqD,IAyGNvqD,EAAA,KAAAwqD,IAlIAxqD,EAAA,KAAAyqD,GAAwB,MACxBzqD,EAAA,KAAA0qD,GAAuB,MACvB1qD,EAAA,KAAA2qD,GAAuB,IAAI,KAC3B3qD,EAAA,KAAA4qD,GAAmB,MAUjB,KAAK,IAAMrmD,EACXpB,EAAA,KAAKsnD,GAAwBL,GAC7BjnD,EAAA,KAAKunD,GAAuBvuB,GAC5Bh5B,EAAA,KAAKynD,GAAmBN,GAAmB,MAC3C,KAAK,KAAOl8E,EACZ,KAAK,SAAWo2B,EAChB,KAAK,OAAS,EACd,KAAK,2BAA6B6lD,CACnC,CACD,wBAAyB,CACvB,OAAOpnD,EAAA,KAAK0nD,IAAqB,KAAO,CACzC,CAaD,MAAM,OAAOr8E,EAAQ,OACnB,KAAM,CACJ,YAAAu8E,CACD,EAAGv8E,EACEyiC,EAAQ,KAAK,IACnBxW,GAAmBwW,EAAO,KAAK,QAAQ,EACvC,MAAM+5C,EAAkB,IAAI,IACtBC,EAAgB,CACpB,KAAM,KACN,MAAAh6C,EACA,YAAaziC,EAAO,YACpB,gBAAiBA,EAAO,gBACxB,mBAAoBA,EAAO,oBAAsB,GACjD,YAAaA,EAAO,cAAgB,GACpC,WAAY,IAAI6pB,GAChB,kBAAmB7pB,EAAO,mBAAqB,IAAIo2C,GACnD,gBAAiBp2C,EAAO,kBAAoB,GAC5C,aAAcA,EAAO,aACrB,aAAcA,EAAO,aACrB,OAAQ,KACR,SAAU,IAChB,EACI,UAAWrI,KAAQ4kF,EAAa,CAC9B,GAAI5kF,EAAK,OACP,SAEF,MAAM+kF,EAAoB/kF,EAAK,iBAAmBgyB,GAAe,MACjE,GAAK+yD,EAIE,CACL,MAAMzF,EAAWuF,EAAgB,IAAI7kF,EAAK,EAAE,EAC5C,GAAI,CAACs/E,EACH,SAEFwF,EAAc,SAAWxF,CAC1B,SATKt/E,EAAK,KAAK,CAAC,IAAMA,EAAK,KAAK,CAAC,GAAKA,EAAK,KAAK,CAAC,IAAMA,EAAK,KAAK,CAAC,EAC/D,SASJ8kF,EAAc,KAAO9kF,EACrB,MAAMuJ,EAAU+sE,GAAyB,OAAOwO,CAAa,EAC7D,GAAI,CAACv7E,EAAQ,aACX,SAEF,GAAI,CAACw7E,GAAqB/kF,EAAK,SAAU,CACvC,MAAMs/E,EAAWuF,EAAgB,IAAI7kF,EAAK,QAAQ,EAC7Cs/E,EAGHA,EAAS,KAAK/1E,CAAO,EAFrBs7E,EAAgB,IAAI7kF,EAAK,SAAU,CAACuJ,CAAO,CAAC,CAI/C,CACD,MAAMy7E,EAAWz7E,EAAQ,SACrBvJ,EAAK,SACPglF,EAAS,MAAM,WAAa,UAE9B,MAAM5rD,EAAA,KAAKkrD,GAAAW,IAAL,UAAoBD,EAAUhlF,EAAK,IACrCuJ,EAAQ,cACVyzB,EAAA,KAAK0nD,IAAqB,IAAIn7E,EAAQ,KAAK,GAAIA,CAAO,GACtD4tB,EAAA,KAAK,6BAAL,MAAAA,EAAiC,wBAAwB5tB,GAE5D,CACD6vB,EAAA,KAAKmrD,GAAAW,IAAL,UACD,CACD,MAAM,mBAAmBN,EAAajP,EAAa,CACjD,MAAMmP,EAAgB,CACpB,KAAM,KACN,MAAO,KAAK,IACZ,YAAAnP,EACA,WAAY,IAAIzjD,GAChB,OAAQ,IACd,EACI,UAAWlyB,KAAQ4kF,EAAa,CAC9B5kF,EAAK,cAALA,EAAK,YAAgBkkF,GAAgB,qBACrCY,EAAc,KAAO9kF,EACrB,MAAMuJ,EAAU+sE,GAAyB,OAAOwO,CAAa,EAC7D,GAAI,CAACv7E,EAAQ,aACX,SAEF,MAAMy7E,EAAWz7E,EAAQ,SACzB,MAAM6vB,EAAA,KAAKkrD,GAAAW,IAAL,UAAoBD,EAAUhlF,EAAK,GAC1C,CACF,CACD,OAAO,CACL,SAAAu+B,CACJ,EAAK,CACD,MAAMuM,EAAQ,KAAK,IACnB,KAAK,SAAWvM,EAChBjK,GAAmBwW,EAAO,CACxB,SAAUvM,EAAS,QACzB,CAAK,EACDnF,EAAA,KAAKmrD,GAAAW,IAAL,WACAp6C,EAAM,OAAS,EAChB,CAqCD,wBAAyB,CACvB,OAAO,MAAM,KAAK9N,EAAA,KAAK0nD,IAAqB,OAAQ,EACrD,CACD,sBAAsB3yE,EAAI,CACxB,OAAOirB,EAAA,KAAK0nD,IAAqB,IAAI3yE,CAAE,CACxC,CACD,WAAW,qBAAsB,CAC/B,OAAOwiB,GAAO,KAAM,sBAAuB,OAAO,OAAO,CACvD,MAAO,EACP,SAAU,EACV,MAAOU,GAA0B,MACjC,UAAW,CAAC,CAAC,EACb,uBAAwB,EACxB,qBAAsB,CACvB,EAAC,CACH,CACH,EAtLEuvD,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YAsBML,GAAA,YAAAW,GAAc,eAAC17E,EAASwI,EAAI,SAChC,MAAMozE,EAAiB57E,EAAQ,YAAcA,EACvComC,EAAew1C,EAAe,GAAK,GAAGhrD,EAAgB,GAAGpoB,CAAE,GAC3DqzE,EAAiB,OAAMjuD,EAAA6F,EAAA,KAAK2nD,MAAL,YAAAxtD,EAAuB,kBAAkBwY,IACtE,GAAIy1C,EACF,SAAW,CAAC1gF,EAAKyG,CAAK,IAAKi6E,EACzBD,EAAe,aAAazgF,EAAKyG,CAAK,EAG1C,KAAK,IAAI,OAAO5B,CAAO,GACvB2tB,EAAA8F,EAAA,KAAKwnD,MAAL,MAAAttD,EAA4B,iBAAiB,KAAK,IAAK3tB,EAAS47E,EAAgB,GACjF,EA8FDZ,GAAA,YAAAW,GAAuB,UAAG,OACxB,GAAI,CAACloD,EAAA,KAAKynD,IACR,OAEF,MAAM35C,EAAQ,KAAK,IACnB,SAAW,CAAC/4B,EAAI/O,CAAM,IAAKg6B,EAAA,KAAKynD,IAAsB,CACpD,MAAMl7E,EAAUuhC,EAAM,cAAc,wBAAwB/4B,CAAE,IAAI,EAClE,GAAI,CAACxI,EACH,SAEFvG,EAAO,UAAY,oBACnB,KAAM,CACJ,WAAAu3C,CACD,EAAGhxC,EACCgxC,EAEMA,EAAW,WAAa,SACjCA,EAAW,YAAYv3C,CAAM,EACnBu3C,EAAW,UAAU,SAAS,mBAAmB,EAG3DA,EAAW,MAAMv3C,CAAM,EAFvBu3C,EAAW,OAAOv3C,CAAM,EAJxBuG,EAAQ,OAAOvG,CAAM,EAQvB,MAAMqiF,EAAqBroD,EAAA,KAAK0nD,IAAqB,IAAI3yE,CAAE,EACtDszE,IAGDA,EAAmB,eACrBluD,EAAA,KAAK,6BAAL,MAAAA,EAAiC,iBAAiBplB,EAAIxI,EAAQ,GAAIvG,GAClEqiF,EAAmB,aAAe,IAElCA,EAAmB,OAASriF,EAE/B,CACDg6B,EAAA,KAAKynD,IAAqB,OAC3B,EAtKH,IAAM3yD,GAANoyD,GA8LA,MAAMoB,GAAc,qFACpB,MAAMC,GAAN,MAAMA,WAAuBhoC,EAAiB,CA6C5C,YAAYl1C,EAAQ,CAClB,MAAM,CACJ,GAAGA,EACH,KAAM,gBACZ,CAAK,EAmCH0xB,EAAA,KAAAyrD,IAkBAzrD,EAAA,KAAA0rD,IAkHA1rD,EAAA,KAAA2rD,IAaA3rD,EAAA,KAAA4rD,IAwPA5rD,EAAA,KAAA6rD,IAWA7rD,EAAA,KAAA8rD,IAsFA9rD,EAAA,KAAA+rD,IA7jBA/rD,EAAA,KAAA8mD,GAAA,QACA9mD,EAAA,KAAAgsD,GAAW,IACXhsD,EAAA,KAAAisD,GAAe,GAAG,KAAK,EAAE,WACzBjsD,EAAA,KAAAksD,GAAc,MACdlsD,EAAA,KAAA8lD,GAAA,QA6CE3iD,EAAA,KAAK2jD,GAASx4E,EAAO,OAASk9E,GAAe,eAAiBhoC,GAAiB,mBAC/ErgB,EAAA,KAAK2iD,GAAYx3E,EAAO,UAAYk9E,GAAe,iBACpD,CA1CD,WAAW,kBAAmB,CAC5B,MAAMh7C,EAAQg7C,GAAe,UACvB/6C,EAAeh4B,GAAQA,EAAK,QAAO,EACnCo4B,EAAQ/Y,GAA0B,gBAClCgZ,EAAMhZ,GAA0B,cACtC,OAAO0C,GAAO,KAAM,mBAAoB,IAAIkQ,GAAgB,CAAC,CAAC,CAAC,SAAU,aAAc,SAAU,YAAY,EAAG8F,EAAM,eAAgB,CACpI,QAAS,EACf,CAAK,EAAG,CAAC,CAAC,aAAc,iBAAkB,SAAU,YAAY,EAAGA,EAAM,cAAc,EAAG,CAAC,CAAC,YAAa,eAAe,EAAGA,EAAM,gBAAiB,CAC5I,KAAM,CAAC,CAACK,EAAO,CAAC,EAChB,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,iBAAkB,qBAAqB,EAAGD,EAAM,gBAAiB,CACrE,KAAM,CAAC,CAACM,EAAK,CAAC,EACd,QAASL,CACf,CAAK,EAAG,CAAC,CAAC,aAAc,gBAAgB,EAAGD,EAAM,gBAAiB,CAC5D,KAAM,CAACK,EAAO,CAAC,EACf,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,kBAAmB,sBAAsB,EAAGD,EAAM,gBAAiB,CACvE,KAAM,CAACM,EAAK,CAAC,EACb,QAASL,CACf,CAAK,EAAG,CAAC,CAAC,UAAW,aAAa,EAAGD,EAAM,gBAAiB,CACtD,KAAM,CAAC,EAAG,CAACK,CAAK,EAChB,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,eAAgB,mBAAmB,EAAGD,EAAM,gBAAiB,CACjE,KAAM,CAAC,EAAG,CAACM,CAAG,EACd,QAASL,CACf,CAAK,EAAG,CAAC,CAAC,YAAa,eAAe,EAAGD,EAAM,gBAAiB,CAC1D,KAAM,CAAC,EAAGK,CAAK,EACf,QAASJ,CACf,CAAK,EAAG,CAAC,CAAC,iBAAkB,qBAAqB,EAAGD,EAAM,gBAAiB,CACrE,KAAM,CAAC,EAAGM,CAAG,EACb,QAASL,CACf,CAAK,CAAC,CAAC,CAAC,CACL,CAWD,OAAO,WAAWwG,EAAMtP,EAAW,CACjC6b,GAAiB,WAAWvM,EAAMtP,CAAS,EAC3C,MAAM9C,EAAQ,iBAAiB,SAAS,eAAe,EACvD,KAAK,iBAAmB,WAAWA,EAAM,iBAAiB,oBAAoB,CAAC,CAChF,CACD,OAAO,oBAAoBhyB,EAAMzB,EAAO,CACtC,OAAQyB,EAAI,CACV,KAAK+kB,GAA2B,cAC9B4zD,GAAe,iBAAmBp6E,EAClC,MACF,KAAKwmB,GAA2B,eAC9B4zD,GAAe,cAAgBp6E,EAC/B,KACH,CACF,CACD,aAAayB,EAAMzB,EAAO,CACxB,OAAQyB,EAAI,CACV,KAAK+kB,GAA2B,cAC9ByH,EAAA,KAAKosD,GAAAU,IAAL,UAAqB/6E,GACrB,MACF,KAAKwmB,GAA2B,eAC9ByH,EAAA,KAAKqsD,GAAAU,IAAL,UAAkBh7E,GAClB,KACH,CACF,CACD,WAAW,2BAA4B,CACrC,MAAO,CAAC,CAACwmB,GAA2B,cAAe4zD,GAAe,gBAAgB,EAAG,CAAC5zD,GAA2B,eAAgB4zD,GAAe,eAAiBhoC,GAAiB,iBAAiB,CAAC,CACrM,CACD,IAAI,oBAAqB,CACvB,MAAO,CAAC,CAAC5rB,GAA2B,cAAeqL,EAAA,KAAK6iD,GAAS,EAAG,CAACluD,GAA2B,eAAgBqL,EAAA,KAAK6jD,GAAM,CAAC,CAC7H,CAkCD,gBAAgB5yD,EAAGO,EAAG,CACpB,KAAK,WAAW,yBAAyBP,EAAGO,EAAG,EAAI,CACpD,CACD,uBAAwB,CACtB,MAAM2M,EAAQ,KAAK,YACnB,MAAO,CAAC,CAACoqD,GAAe,iBAAmBpqD,EAAO,EAAEoqD,GAAe,iBAAmBvoD,EAAA,KAAK6iD,KAAa1kD,CAAK,CAC9G,CACD,SAAU,CACH,KAAK,SAGV,MAAM,QAAO,EACT,KAAK,MAAQ,OAGZ,KAAK,iBACR,KAAK,OAAO,IAAI,IAAI,GAEvB,CACD,gBAAiB,CACf,GAAI,KAAK,eACP,OAEF,KAAK,OAAO,gBAAgB,EAAK,EACjC,KAAK,OAAO,cAAcvJ,GAAqB,QAAQ,EACvD,MAAM,eAAc,EACpB,KAAK,WAAW,UAAU,OAAO,SAAS,EAC1C,KAAK,UAAU,gBAAkB,GACjC,KAAK,aAAe,GACpB,KAAK,IAAI,gBAAgB,uBAAuB,EAChDsL,EAAA,KAAK+oD,GAAc,IAAI,iBACvB,MAAM3lD,EAAS,KAAK,WAAW,eAAetD,EAAA,KAAKipD,GAAW,EAC9D,KAAK,UAAU,iBAAiB,UAAW,KAAK,iBAAiB,KAAK,IAAI,EAAG,CAC3E,OAAA3lD,CACN,CAAK,EACD,KAAK,UAAU,iBAAiB,QAAS,KAAK,eAAe,KAAK,IAAI,EAAG,CACvE,OAAAA,CACN,CAAK,EACD,KAAK,UAAU,iBAAiB,OAAQ,KAAK,cAAc,KAAK,IAAI,EAAG,CACrE,OAAAA,CACN,CAAK,EACD,KAAK,UAAU,iBAAiB,QAAS,KAAK,eAAe,KAAK,IAAI,EAAG,CACvE,OAAAA,CACN,CAAK,EACD,KAAK,UAAU,iBAAiB,QAAS,KAAK,eAAe,KAAK,IAAI,EAAG,CACvE,OAAAA,CACN,CAAK,CACF,CACD,iBAAkB,OACX,KAAK,iBAGV,KAAK,OAAO,gBAAgB,EAAI,EAChC,MAAM,gBAAe,EACrB,KAAK,WAAW,UAAU,IAAI,SAAS,EACvC,KAAK,UAAU,gBAAkB,GACjC,KAAK,IAAI,aAAa,wBAAyBtD,EAAA,KAAKgpD,GAAY,EAChE,KAAK,aAAe,IACpB7uD,EAAA6F,EAAA,KAAKipD,MAAL,MAAA9uD,EAAkB,QAClB+F,EAAA,KAAK+oD,GAAc,MACnB,KAAK,IAAI,MAAM,CACb,cAAe,EACrB,CAAK,EACD,KAAK,UAAY,GACjB,KAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB,EAChD,CACD,QAAQhkF,EAAO,CACR,KAAK,sBAGV,MAAM,QAAQA,CAAK,EACfA,EAAM,SAAW,KAAK,WACxB,KAAK,UAAU,QAElB,CACD,UAAUm3C,EAAO,OACX,KAAK,QAGT,KAAK,eAAc,EACfA,GACF,KAAK,UAAU,SAEbjiB,EAAA,KAAK,kBAAL,MAAAA,EAAsB,YACxB,KAAK,OAAM,EAEb,KAAK,gBAAkB,KACxB,CACD,SAAU,CACR,MAAO,CAAC,KAAK,WAAa,KAAK,UAAU,UAAU,KAAM,IAAK,EAC/D,CACD,QAAS,CACP,KAAK,UAAY,GACb,KAAK,SACP,KAAK,OAAO,gBAAgB,EAAI,EAChC,KAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB,GAEjD,MAAM,OAAM,CACb,CA2CD,QAAS,CACP,GAAI,CAAC,KAAK,eACR,OAEF,MAAM,OAAM,EACZ,KAAK,gBAAe,EACpB,MAAMivD,EAAYppD,EAAA,KAAK+oD,IACjBM,EAAUnpD,EAAA,KAAK6oD,GAAW3sD,EAAA,KAAKssD,GAAAY,IAAL,WAAoB,WACpD,GAAIF,IAAcC,EAChB,OAEF,MAAME,EAAUx4E,GAAQ,CAEtB,GADAmvB,EAAA,KAAK6oD,GAAWh4E,GACZ,CAACA,EAAM,CACT,KAAK,OAAM,EACX,MACD,CACDqrB,EAAA,KAAKwsD,GAAAY,IAAL,WACA,KAAK,WAAW,QAAQ,IAAI,EAC5BptD,EAAA,KAAKusD,GAAAc,IAAL,UACN,EACI,KAAK,YAAY,CACf,IAAK,IAAM,CACTF,EAAQF,CAAO,CAChB,EACD,KAAM,IAAM,CACVE,EAAQH,CAAS,CAClB,EACD,SAAU,EAChB,CAAK,EACDhtD,EAAA,KAAKusD,GAAAc,IAAL,UACD,CACD,yBAA0B,CACxB,OAAO,KAAK,cACb,CACD,iBAAkB,CAChB,KAAK,eAAc,EACnB,KAAK,UAAU,OAChB,CACD,SAASxkF,EAAO,CACd,KAAK,gBAAe,CACrB,CACD,QAAQA,EAAO,CACTA,EAAM,SAAW,KAAK,KAAOA,EAAM,MAAQ,UAC7C,KAAK,gBAAe,EACpBA,EAAM,eAAc,EAEvB,CACD,iBAAiBA,EAAO,CACtBsjF,GAAe,iBAAiB,KAAK,KAAMtjF,CAAK,CACjD,CACD,eAAeA,EAAO,CACpB,KAAK,UAAY,EAClB,CACD,cAAcA,EAAO,CACnB,KAAK,UAAY,EAClB,CACD,eAAeA,EAAO,CACpB,KAAK,OAAO,IAAI,UAAU,OAAO,kBAAmB,KAAK,QAAO,CAAE,CACnE,CACD,gBAAiB,CACf,KAAK,UAAU,aAAa,OAAQ,SAAS,EAC7C,KAAK,UAAU,gBAAgB,gBAAgB,CAChD,CACD,eAAgB,CACd,KAAK,UAAU,aAAa,OAAQ,SAAS,EAC7C,KAAK,UAAU,aAAa,iBAAkB,EAAI,CACnD,CACD,QAAS,CACP,GAAI,KAAK,IACP,OAAO,KAAK,IAEd,IAAI+1C,EAAOC,GACP,KAAK,SAAW,KAAK,uBACvBD,EAAQ,KAAK,EACbC,EAAQ,KAAK,GAEf,MAAM,OAAM,EACZ,KAAK,UAAY,SAAS,cAAc,KAAK,EAC7C,KAAK,UAAU,UAAY,WAC3B,KAAK,UAAU,aAAa,KAAMjb,EAAA,KAAKgpD,GAAY,EACnD,KAAK,UAAU,aAAa,eAAgB,kBAAkB,EAC9D,KAAK,UAAU,aAAa,kBAAmB,iBAAiB,EAChE,KAAK,cAAa,EAClB,KAAK,UAAU,gBAAkB,GACjC,KAAM,CACJ,MAAApnD,CACN,EAAQ,KAAK,UAQT,GAPAA,EAAM,SAAW,QAAQ5B,EAAA,KAAK6iD,GAAS,kCACvCjhD,EAAM,MAAQ5B,EAAA,KAAK6jD,IACnB,KAAK,IAAI,OAAO,KAAK,SAAS,EAC9B,KAAK,WAAa,SAAS,cAAc,KAAK,EAC9C,KAAK,WAAW,UAAU,IAAI,UAAW,SAAS,EAClD,KAAK,IAAI,OAAO,KAAK,UAAU,EAC/Bt+C,GAAW,KAAM,KAAK,IAAK,CAAC,WAAY,SAAS,CAAC,EAC9C,KAAK,SAAW,KAAK,oBAAqB,CAC5C,KAAM,CAAC8M,EAAaC,CAAY,EAAI,KAAK,iBACzC,GAAI,KAAK,oBAAqB,CAC5B,KAAM,CACJ,SAAA5O,CACV,EAAY,KAAK,aACT,GAAI,CAACyO,EAAIC,CAAE,EAAI,KAAK,sBAAqB,EACzC,CAACD,EAAIC,CAAE,EAAI,KAAK,wBAAwBD,EAAIC,CAAE,EAC9C,KAAM,CAAC1Q,EAAWC,CAAU,EAAI,KAAK,eAC/B,CAAC4Y,EAAOC,CAAK,EAAI,KAAK,gBAC5B,IAAIkvC,EAAMC,EACV,OAAQ,KAAK,SAAQ,CACnB,IAAK,GACHD,EAAO1uC,GAAStX,EAAS,CAAC,EAAI6W,GAAS7Y,EACvCioD,EAAO1uC,EAAQ,KAAK,QAAUvX,EAAS,CAAC,EAAI8W,GAAS7Y,EACrD,MACF,IAAK,IACH+nD,EAAO1uC,GAAStX,EAAS,CAAC,EAAI6W,GAAS7Y,EACvCioD,EAAO1uC,GAASvX,EAAS,CAAC,EAAI8W,GAAS7Y,EACvC,CAACwQ,EAAIC,CAAE,EAAI,CAACA,EAAI,CAACD,CAAE,EACnB,MACF,IAAK,KACHu3C,EAAO1uC,EAAQ,KAAK,OAAStX,EAAS,CAAC,EAAI6W,GAAS7Y,EACpDioD,EAAO1uC,GAASvX,EAAS,CAAC,EAAI8W,GAAS7Y,EACvC,CAACwQ,EAAIC,CAAE,EAAI,CAAC,CAACD,EAAI,CAACC,CAAE,EACpB,MACF,IAAK,KACHs3C,EAAO1uC,GAAStX,EAAS,CAAC,EAAI6W,EAAQ,KAAK,OAAS5Y,GAAcD,EAClEioD,EAAO1uC,GAASvX,EAAS,CAAC,EAAI8W,EAAQ,KAAK,MAAQ9Y,GAAaC,EAChE,CAACwQ,EAAIC,CAAE,EAAI,CAAC,CAACA,EAAID,CAAE,EACnB,KACH,CACD,KAAK,MAAMu3C,EAAOr3C,EAAas3C,EAAOr3C,EAAcH,EAAIC,CAAE,CAClE,MACQ,KAAK,gBAAgB4I,EAAOC,CAAK,EAEnC7e,EAAA,KAAKwsD,GAAAY,IAAL,WACA,KAAK,aAAe,GACpB,KAAK,UAAU,gBAAkB,EACvC,MACM,KAAK,aAAe,GACpB,KAAK,UAAU,gBAAkB,GAEnC,OAAO,KAAK,GACb,CAID,eAAevkF,EAAO,WACpB,MAAM8qC,EAAgB9qC,EAAM,eAAiB,OAAO,cAC9C,CACJ,MAAAyrC,CACD,EAAGX,EACJ,GAAIW,EAAM,SAAW,GAAKA,EAAM,CAAC,IAAM,aACrC,OAEFzrC,EAAM,eAAc,EACpB,MAAM2kF,EAAQxtD,EAAAjC,EAAAouD,GAAesB,GAAAC,IAAf,KAAA3vD,EAAmC4V,EAAc,QAAQ,MAAM,GAAK,IAAI,WAAWu4C,GAAa;AAAA,CAAI,EAClH,GAAI,CAACsB,EACH,OAEF,MAAM/6C,EAAY,OAAO,eACzB,GAAI,CAACA,EAAU,WACb,OAEF,KAAK,UAAU,YACfA,EAAU,mBAAkB,EAC5B,MAAM2D,EAAQ3D,EAAU,WAAW,CAAC,EACpC,GAAI,CAAC+6C,EAAM,SAAS;AAAA,CAAI,EAAG,CACzBp3C,EAAM,WAAW,SAAS,eAAeo3C,CAAK,CAAC,EAC/C,KAAK,UAAU,YACf/6C,EAAU,gBAAe,EACzB,MACD,CACD,KAAM,CACJ,eAAAk7C,EACA,YAAAC,CACD,EAAGx3C,EACEy3C,EAAe,GACfC,EAAc,GACpB,GAAIH,EAAe,WAAa,KAAK,UAAW,CAC9C,MAAMjlD,EAASilD,EAAe,cAE9B,GADAG,EAAY,KAAKH,EAAe,UAAU,MAAMC,CAAW,EAAE,WAAW1B,GAAa,EAAE,CAAC,EACpFxjD,IAAW,KAAK,UAAW,CAC7B,IAAIn/B,EAASskF,EACb,UAAW/sC,KAAS,KAAK,UAAU,WAAY,CAC7C,GAAIA,IAAUpY,EAAQ,CACpBn/B,EAASukF,EACT,QACD,CACDvkF,EAAO,KAAKy2B,EAAAlC,EAAAquD,GAAe4B,GAAAC,IAAf,KAAAlwD,EAA+BgjB,EAAM,CAClD,CACF,CACD+sC,EAAa,KAAKF,EAAe,UAAU,MAAM,EAAGC,CAAW,EAAE,WAAW1B,GAAa,EAAE,CAAC,CAClG,SAAeyB,IAAmB,KAAK,UAAW,CAC5C,IAAIpkF,EAASskF,EACTvkF,EAAI,EACR,UAAWw3C,KAAS,KAAK,UAAU,WAC7Bx3C,MAAQskF,IACVrkF,EAASukF,GAEXvkF,EAAO,KAAKy2B,EAAA2R,EAAAw6C,GAAe4B,GAAAC,IAAf,KAAAr8C,EAA+BmP,EAAM,CAEpD,CACDhd,EAAA,KAAK6oD,GAAW,GAAGkB,EAAa,KAAK;AAAA,CAAI,CAAC,GAAGL,CAAK,GAAGM,EAAY,KAAK;AAAA,CAAI,CAAC,IAC3E9tD,EAAA,KAAKwsD,GAAAY,IAAL,WACA,MAAMa,EAAW,IAAI,MACrB,IAAIC,EAAeL,EAAa,OAAO,CAACn+E,EAAKk5E,IAASl5E,EAAMk5E,EAAK,OAAQ,CAAC,EAC1E,SAAW,CACT,WAAAznC,CACN,IAAS,KAAK,UAAU,WAClB,GAAIA,EAAW,WAAa,KAAK,UAAW,CAC1C,MAAM/3C,EAAS+3C,EAAW,UAAU,OACpC,GAAI+sC,GAAgB9kF,EAAQ,CAC1B6kF,EAAS,SAAS9sC,EAAY+sC,CAAY,EAC1CD,EAAS,OAAO9sC,EAAY+sC,CAAY,EACxC,KACD,CACDA,GAAgB9kF,CACjB,CAEHqpC,EAAU,gBAAe,EACzBA,EAAU,SAASw7C,CAAQ,CAC5B,CAkBD,IAAI,YAAa,CACf,OAAO,KAAK,SACb,CACD,aAAa,YAAYrnF,EAAM8hC,EAAQJ,EAAW,OAChD,IAAIghC,EAAc,KAClB,GAAI1iE,aAAgBi3E,GAA2B,CAC7C,KAAM,CACJ,KAAM,CACJ,sBAAuB,CACrB,SAAA3b,EACA,UAAAuhB,CACD,EACD,KAAAxkD,EACA,SAAA+C,EACA,GAAArpB,EACA,SAAAuxE,CACD,EACD,YAAA/S,EACA,aAAAgX,EACA,OAAQ,CACN,KAAM,CACJ,WAAA/7C,CACD,CACF,CACF,EAAGxrC,EACJ,GAAI,CAACuwE,GAAeA,EAAY,SAAW,EACzC,OAAO,KAET7N,EAAc1iE,EAAO,CACnB,eAAgB4xB,GAAqB,SACrC,MAAO,MAAM,KAAKirD,CAAS,EAC3B,SAAAvhB,EACA,MAAOiV,EAAY,KAAK;AAAA,CAAI,EAC5B,SAAUgX,EACV,UAAW/7C,EAAa,EACxB,KAAMnT,EAAK,MAAM,CAAC,EAClB,SAAA+C,EACA,GAAArpB,EACA,QAAS,GACT,SAAAuxE,CACR,CACK,CACD,MAAM9jD,EAAS,MAAM,MAAM,YAAYx/B,EAAM8hC,EAAQJ,CAAS,EAC9D,OAAAxE,EAAAsC,EAAOqgD,GAAY7/E,EAAK,UACxBk9B,EAAAsC,EAAOqhD,GAAS7qE,GAAK,aAAa,GAAGhW,EAAK,KAAK,GAC/Ck9B,EAAAsC,EAAOumD,GAAW3sD,EAAAjC,EAAAouD,GAAesB,GAAAC,IAAf,KAAA3vD,EAAmCn3B,EAAK,QAC1Dw/B,EAAO,oBAAsBx/B,EAAK,IAAM,KACxCw/B,EAAO,aAAekjC,EACfljC,CACR,CACD,UAAUgS,EAAe,GAAO,CAC9B,GAAI,KAAK,UACP,OAAO,KAET,GAAI,KAAK,QACP,OAAO,KAAK,mBAEd,MAAMg2C,EAAUjC,GAAe,iBAAmB,KAAK,YACjDltD,EAAO,KAAK,QAAQmvD,EAASA,CAAO,EACpC1pD,EAAQyf,GAAiB,cAAc,QAAQ,KAAK,gBAAkB,iBAAiB,KAAK,SAAS,EAAE,MAAQvgB,EAAA,KAAK6jD,GAAM,EAC1H/zC,EAAa,CACjB,eAAgBlb,GAAqB,SACrC,MAAAkM,EACA,SAAUd,EAAA,KAAK6iD,IACf,MAAOzmD,EAAA,KAAKysD,GAAA4B,IAAL,WACP,UAAW,KAAK,UAChB,KAAApvD,EACA,SAAU,KAAK,SACf,mBAAoB,KAAK,mBAC/B,EACI,OAAImZ,GACF1E,EAAW,OAAS,GACbA,GAEL,KAAK,qBAAuB,CAAC1T,EAAA,KAAK0sD,GAAA4B,IAAL,UAAwB56C,GAChD,MAETA,EAAW,GAAK,KAAK,oBACdA,EACR,CAUD,wBAAwB2C,EAAY,CAClC,MAAM6K,EAAU,MAAM,wBAAwB7K,CAAU,EACxD,GAAI,KAAK,QACP,OAAO6K,EAET,KAAM,CACJ,MAAA1b,CACD,EAAG0b,EACJ1b,EAAM,SAAW,QAAQ5B,EAAA,KAAK6iD,GAAS,kCACvCjhD,EAAM,MAAQ5B,EAAA,KAAK6jD,IACnBvmC,EAAQ,gBAAe,EACvB,UAAW0nC,KAAQhlD,EAAA,KAAK+oD,IAAS,MAAM;AAAA,CAAI,EAAG,CAC5C,MAAMznD,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,OAAO0jD,EAAO,SAAS,eAAeA,CAAI,EAAI,SAAS,cAAc,IAAI,CAAC,EAC9E1nC,EAAQ,OAAOhc,CAAG,CACnB,CACD,MAAMkpD,EAAUjC,GAAe,iBAAmB,KAAK,YACvD,OAAA91C,EAAW,aAAa,CACtB,KAAM,KAAK,QAAQ+3C,EAASA,CAAO,EACnC,aAAcxqD,EAAA,KAAK+oD,GACzB,CAAK,EACMzrC,CACR,CACD,uBAAuB7K,EAAY,CACjC,MAAM,uBAAuBA,CAAU,EACvCA,EAAW,YAAW,CACvB,CACH,EAjmBEoxC,GAAA,YACAkF,GAAA,YACAC,GAAA,YACAC,GAAA,YACApG,GAAA,YA+EA2F,GAAA,YAAAU,GAAe,SAAC5qB,EAAU,CACxB,MAAMqsB,EAAc97E,GAAQ,CAC1B,KAAK,UAAU,MAAM,SAAW,QAAQA,CAAI,kCAC5C,KAAK,UAAU,EAAG,EAAEA,EAAOmxB,EAAA,KAAK6iD,KAAa,KAAK,WAAW,EAC7D3iD,EAAA,KAAK2iD,GAAYh0E,GACjButB,EAAA,KAAKusD,GAAAc,IAAL,UACN,EACUmB,EAAgB5qD,EAAA,KAAK6iD,IAC3B,KAAK,YAAY,CACf,IAAK8H,EAAY,KAAK,KAAMrsB,CAAQ,EACpC,KAAMqsB,EAAY,KAAK,KAAMC,CAAa,EAC1C,KAAM,KAAK,WAAW,SAAS,KAAK,KAAK,WAAY,IAAI,EACzD,SAAU,GACV,KAAMj2D,GAA2B,cACjC,oBAAqB,GACrB,SAAU,EAChB,CAAK,CACF,EACD8zD,GAAA,YAAAU,GAAY,SAACroD,EAAO,CAClB,MAAMk7C,EAAW6O,GAAO,CACtB3qD,EAAA,KAAK2jD,GAAS,KAAK,UAAU,MAAM,MAAQgH,EACjD,EACUC,EAAa9qD,EAAA,KAAK6jD,IACxB,KAAK,YAAY,CACf,IAAK7H,EAAS,KAAK,KAAMl7C,CAAK,EAC9B,KAAMk7C,EAAS,KAAK,KAAM8O,CAAU,EACpC,KAAM,KAAK,WAAW,SAAS,KAAK,KAAK,WAAY,IAAI,EACzD,SAAU,GACV,KAAMn2D,GAA2B,eACjC,oBAAqB,GACrB,SAAU,EAChB,CAAK,CACF,EAoGD+zD,GAAA,YAAAY,GAAY,UAAG,OACb,MAAM3jF,EAAS,GACf,KAAK,UAAU,YACf,IAAIolF,EAAY,KAChB,UAAW7tC,KAAS,KAAK,UAAU,YAC7B6tC,GAAA,YAAAA,EAAW,YAAa,KAAK,WAAa7tC,EAAM,WAAa,OAGjEv3C,EAAO,KAAKy2B,EAAAjC,EAAAouD,GAAe4B,GAAAC,IAAf,KAAAjwD,EAA+B+iB,EAAM,EACjD6tC,EAAY7tC,GAEd,OAAOv3C,EAAO,KAAK;AAAA,CAAI,CACxB,EACDgjF,GAAA,YAAAc,GAAoB,UAAG,CACrB,KAAM,CAACp3C,EAAaC,CAAY,EAAI,KAAK,iBACzC,IAAIjX,EACJ,GAAI,KAAK,gBACPA,EAAO,KAAK,IAAI,4BACX,CACL,KAAM,CACJ,aAAAuX,EACA,IAAAtR,CACD,EAAG,KACE0pD,EAAe1pD,EAAI,MAAM,QACzB2pD,EAAkB3pD,EAAI,UAAU,SAAS,QAAQ,EACvDA,EAAI,UAAU,OAAO,QAAQ,EAC7BA,EAAI,MAAM,QAAU,SACpBsR,EAAa,IAAI,OAAO,KAAK,GAAG,EAChCvX,EAAOiG,EAAI,wBACXA,EAAI,OAAM,EACVA,EAAI,MAAM,QAAU0pD,EACpB1pD,EAAI,UAAU,OAAO,SAAU2pD,CAAe,CAC/C,CACG,KAAK,SAAW,MAAQ,KAAK,eAAiB,KAChD,KAAK,MAAQ5vD,EAAK,MAAQgX,EAC1B,KAAK,OAAShX,EAAK,OAASiX,IAE5B,KAAK,MAAQjX,EAAK,OAASgX,EAC3B,KAAK,OAAShX,EAAK,MAAQiX,GAE7B,KAAK,kBAAiB,CACvB,EA6IM63C,GAAA,YAAAC,GAAe,SAACnb,EAAM,CAC3B,OAAQA,EAAK,WAAa,KAAK,UAAYA,EAAK,UAAYA,EAAK,WAAW,WAAWqZ,GAAa,EAAE,CACvG,EA6EDM,GAAA,YAAAY,GAAW,UAAG,CAEZ,GADA,KAAK,UAAU,kBACX,EAACxpD,EAAA,KAAK+oD,IAGV,UAAW/D,KAAQhlD,EAAA,KAAK+oD,IAAS,MAAM;AAAA,CAAI,EAAG,CAC5C,MAAMznD,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,OAAO0jD,EAAO,SAAS,eAAeA,CAAI,EAAI,SAAS,cAAc,IAAI,CAAC,EAC9E,KAAK,UAAU,OAAO1jD,CAAG,CAC1B,CACF,EACDunD,GAAA,YAAA4B,GAAiB,UAAG,CAClB,OAAOzqD,EAAA,KAAK+oD,IAAS,WAAW,IAAQ,GAAG,CAC5C,EACMc,GAAA,YAAAC,GAAmB,SAACxsC,EAAS,CAClC,OAAOA,EAAQ,WAAW,IAAK,GAAM,CACtC,EAiFDwrC,GAAA,YAAA4B,GAAkB,SAAC56C,EAAY,CAC7B,KAAM,CACJ,MAAA3hC,EACA,SAAAmwD,EACA,MAAAx9B,EACA,UAAA8P,CACN,EAAQ,KAAK,aACT,OAAO,KAAK,eAAiBd,EAAW,QAAU3hC,GAAS2hC,EAAW,WAAawuB,GAAYxuB,EAAW,MAAM,KAAK,CAAC98B,EAAGtN,IAAMsN,IAAM8tB,EAAMp7B,CAAC,CAAC,GAAKoqC,EAAW,YAAcc,CAC5K,EAxLD7T,EA9YIwrD,GA8YG4B,IA6FPptD,EA3eIwrD,GA2eGsB,IArePtiF,GANIghF,GAMG,0BAA0B,IACjChhF,GAPIghF,GAOG,mBAAmB,GAC1BhhF,GARIghF,GAQG,gBAAgB,MACvBhhF,GATIghF,GASG,mBAAmB,IAkC1BhhF,GA3CIghF,GA2CG,QAAQ,YACfhhF,GA5CIghF,GA4CG,cAAc3zD,GAAqB,UA5C5C,IAAMs2D,GAAN3C,GAsmBA,MAAM4C,EAAQ,CAEZ,WAAY,CACV7yD,GAAY,kDAAkD,CAC/D,CACD,IAAI,KAAM,CACRA,GAAY,4CAA4C,CACzD,CACD,UAAU8yD,EAAOzf,EAAW,CAC1BrzC,GAAY,kDAAkD,CAC/D,CACD,OAAO,SAASrc,EAAKk2B,EAAIC,EAAIjX,EAAIC,EAAIlwB,EAAM,CACzCA,MAAS,IAAI,aAAa+Q,EAAI,MAAM,GACpC,QAASvW,EAAI,EAAG05B,EAAKnjB,EAAI,OAAQvW,EAAI05B,EAAI15B,GAAK,EAC5CwF,EAAKxF,CAAC,EAAIysC,EAAKl2B,EAAIvW,CAAC,EAAIy1B,EACxBjwB,EAAKxF,EAAI,CAAC,EAAI0sC,EAAKn2B,EAAIvW,EAAI,CAAC,EAAI01B,EAElC,OAAOlwB,CACR,CACD,OAAO,gBAAgB+Q,EAAKk2B,EAAIC,EAAIjX,EAAIC,EAAIlwB,EAAM,CAChDA,MAAS,IAAI,aAAa+Q,EAAI,MAAM,GACpC,QAASvW,EAAI,EAAG05B,EAAKnjB,EAAI,OAAQvW,EAAI05B,EAAI15B,GAAK,EAC5CwF,EAAKxF,CAAC,EAAIysC,EAAKl2B,EAAIvW,EAAI,CAAC,EAAIy1B,EAC5BjwB,EAAKxF,EAAI,CAAC,EAAI0sC,EAAKn2B,EAAIvW,CAAC,EAAI01B,EAE9B,OAAOlwB,CACR,CACD,OAAO,WAAW+Q,EAAKk2B,EAAIC,EAAIlnC,EAAM,CACnCA,MAAS,IAAI,aAAa+Q,EAAI,MAAM,GACpC,QAASvW,EAAI,EAAG05B,EAAKnjB,EAAI,OAAQvW,EAAI05B,EAAI15B,GAAK,EAC5CwF,EAAKxF,CAAC,EAAIysC,EAAKl2B,EAAIvW,CAAC,EACpBwF,EAAKxF,EAAI,CAAC,EAAI0sC,EAAKn2B,EAAIvW,EAAI,CAAC,EAE9B,OAAOwF,CACR,CACD,OAAO,SAAS+lB,EAAG,CACjB,OAAO,KAAK,MAAMA,EAAI,GAAK,CAC5B,CACD,OAAO,gBAAgBA,EAAGO,EAAG6gB,EAAaC,EAAclU,EAAU,CAChE,OAAQA,EAAQ,CACd,IAAK,IACH,MAAO,CAAC,EAAI5M,EAAI6gB,EAAaphB,EAAIqhB,CAAY,EAC/C,IAAK,KACH,MAAO,CAAC,EAAIrhB,EAAIohB,EAAa,EAAI7gB,EAAI8gB,CAAY,EACnD,IAAK,KACH,MAAO,CAAC9gB,EAAI6gB,EAAa,EAAIphB,EAAIqhB,CAAY,EAC/C,QACE,MAAO,CAACrhB,EAAIohB,EAAa7gB,EAAI8gB,CAAY,CAC5C,CACF,CACD,OAAO,oBAAoBrhB,EAAGO,EAAG4M,EAAU,CACzC,OAAQA,EAAQ,CACd,IAAK,IACH,MAAO,CAAC,EAAI5M,EAAGP,CAAC,EAClB,IAAK,KACH,MAAO,CAAC,EAAIA,EAAG,EAAIO,CAAC,EACtB,IAAK,KACH,MAAO,CAACA,EAAG,EAAIP,CAAC,EAClB,QACE,MAAO,CAACA,EAAGO,CAAC,CACf,CACF,CACD,OAAO,mBAAmBsK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CAChD,MAAO,EAAEL,EAAK,EAAIE,GAAM,GAAID,EAAK,EAAIE,GAAM,GAAI,EAAID,EAAKE,GAAM,GAAI,EAAID,EAAKE,GAAM,GAAIH,EAAKE,GAAM,GAAID,EAAKE,GAAM,CAAC,CACjH,CACH,CAhEE50B,GADI4jF,GACG,YAAY,oGAqErB,MAAME,GAAN,MAAMA,EAAiB,CAiBrB,YAAY,CACV,EAAAp6D,EACA,EAAAO,CACJ,EAAK8T,EAAKgmD,EAAazE,EAAW7hD,EAAOumD,EAAc,EAAG,CAcxDxuD,EAAA,KAAAyuD,IA6FAzuD,EAAA,KAAA0uD,IAKA1uD,EAAA,KAAA2uD,IAIA3uD,EAAA,KAAA4uD,IAmDA5uD,EAAA,KAAA6uD,IAQA7uD,EAAA,KAAA8uD,IAKA9uD,EAAA,KAAA+uD,IAvMA/uD,EAAA,KAAAgvD,GAAA,QACAhvD,EAAA,KAAAivD,GAAU,IACVjvD,EAAA,KAAAkvD,GAAA,QACAlvD,EAAA,KAAAmvD,GAAA,QACAnvD,EAAA,KAAAovD,GAAO,IACPpvD,EAAA,KAAAqvD,GAAQ,IAAI,aAAa,EAAE,GAC3BrvD,EAAA,KAAAsvD,GAAA,QACAtvD,EAAA,KAAAuvD,GAAA,QACAvvD,EAAA,KAAAwvD,GAAA,QACAxvD,EAAA,KAAAyvD,GAAA,QACAzvD,EAAA,KAAA0vD,GAAA,QACA1vD,EAAA,KAAA2vD,GAAA,QACA3vD,EAAA,KAAA4vD,GAAU,IAQRzsD,EAAA,KAAK6rD,GAAOzmD,GACZpF,EAAA,KAAKwsD,GAAa7F,EAAYyE,GAC9BprD,EAAA,KAAKgsD,GAASlnD,GACdhF,EAAA,KAAKosD,IAAM,IAAI,CAAC,IAAK,IAAK,IAAK,IAAKn7D,EAAGO,CAAC,EAAG,CAAC,EAC5C0O,EAAA,KAAK+rD,GAAeV,GACpBrrD,EAAA,KAAKssD,GAAYxsD,EAAAqrD,GAAiBuB,IAAYtB,GAC9CprD,EAAA,KAAKqsD,GAAOvsD,EAAAqrD,GAAiBwB,IAAOvB,GACpCprD,EAAA,KAAKusD,GAAenB,GACpBtrD,EAAA,KAAK2sD,IAAQ,KAAK17D,EAAGO,CAAC,CACvB,CACD,SAAU,CACR,OAAO,MAAMwO,EAAA,KAAKosD,IAAM,CAAC,CAAC,CAC3B,CAOD,IAAI,CACF,EAAAn7D,EACA,EAAAO,CACJ,EAAK,QACD0O,EAAA,KAAKmsD,GAASp7D,GACdiP,EAAA,KAAKosD,GAAS96D,GACd,KAAM,CAACid,EAAQC,EAAQouB,EAAYC,CAAW,EAAI/8B,EAAA,KAAK+rD,IACvD,GAAI,CAACjwD,EAAIC,EAAIC,EAAIC,CAAE,EAAI+D,EAAA,KAAKosD,IAAM,SAAS,EAAG,EAAE,EAChD,MAAMU,EAAQ77D,EAAI+K,EACZ+wD,EAAQv7D,EAAIyK,EACZvpB,EAAI,KAAK,MAAMo6E,EAAOC,CAAK,EACjC,GAAIr6E,EAAIstB,EAAA,KAAKusD,IACX,MAAO,GAET,MAAMS,EAAQt6E,EAAIstB,EAAA,KAAKwsD,IACjBS,EAAID,EAAQt6E,EACZwpC,EAAS+wC,EAAIH,EACb3wC,EAAS8wC,EAAIF,EACnB,IAAInxD,EAAKE,EACLD,EAAKE,EACTD,EAAKE,EACLD,EAAKE,EACLD,GAAMkgB,EACNjgB,GAAMkgB,GACNhiB,GAAA6F,EAAA,KAAK2sD,MAAL,MAAAxyD,GAAc,KAAKlJ,EAAGO,GACtB,MAAM07D,EAAK,CAAC/wC,EAAS6wC,EACfG,EAAKjxC,EAAS8wC,EACdI,EAAMF,EAAKltD,EAAA,KAAK0sD,IAChBW,EAAMF,EAAKntD,EAAA,KAAK0sD,IAKtB,OAJA1sD,EAAA,KAAKosD,IAAM,IAAIpsD,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EAAG,CAAC,EAC3CpsD,EAAA,KAAKosD,IAAM,IAAI,CAACpwD,EAAKoxD,EAAKnxD,EAAKoxD,CAAG,EAAG,CAAC,EACtCrtD,EAAA,KAAKosD,IAAM,IAAIpsD,EAAA,KAAKosD,IAAM,SAAS,GAAI,EAAE,EAAG,EAAE,EAC9CpsD,EAAA,KAAKosD,IAAM,IAAI,CAACpwD,EAAKoxD,EAAKnxD,EAAKoxD,CAAG,EAAG,EAAE,EACnC,MAAMrtD,EAAA,KAAKosD,IAAM,CAAC,CAAC,GACjBpsD,EAAA,KAAKmsD,IAAK,SAAW,IACvBnsD,EAAA,KAAKosD,IAAM,IAAI,CAACtwD,EAAKsxD,EAAKrxD,EAAKsxD,CAAG,EAAG,CAAC,EACtCrtD,EAAA,KAAKmsD,IAAK,KAAK,IAAK,IAAK,IAAK,KAAMrwD,EAAKsxD,EAAM3+C,GAAUquB,GAAa/gC,EAAKsxD,EAAM3+C,GAAUquB,CAAW,EACtG/8B,EAAA,KAAKosD,IAAM,IAAI,CAACtwD,EAAKsxD,EAAKrxD,EAAKsxD,CAAG,EAAG,EAAE,EACvCrtD,EAAA,KAAKgsD,IAAQ,KAAK,IAAK,IAAK,IAAK,KAAMlwD,EAAKsxD,EAAM3+C,GAAUquB,GAAa/gC,EAAKsxD,EAAM3+C,GAAUquB,CAAW,GAE3G/8B,EAAA,KAAKosD,IAAM,IAAI,CAACxwD,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAAG,CAAC,EACnC,CAAC,KAAK,YAEf+D,EAAA,KAAKosD,IAAM,IAAI,CAACxwD,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAAG,CAAC,EAC5B,KAAK,IAAI,KAAK,MAAMJ,EAAKE,EAAIH,EAAKE,CAAE,EAAI,KAAK,MAAMqgB,EAAQD,CAAM,CAAC,EACpE,KAAK,GAAK,GACpB,CAACpgB,EAAIC,EAAIC,EAAIC,CAAE,EAAI+D,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EAC3CpsD,EAAA,KAAKmsD,IAAK,KAAK,IAAK,IAAK,IAAK,MAAOrwD,EAAKE,GAAM,EAAIyS,GAAUquB,IAAc/gC,EAAKE,GAAM,EAAIyS,GAAUquB,CAAW,EAChH,CAACjhC,EAAIC,EAAIH,EAAIC,CAAE,EAAImE,EAAA,KAAKosD,IAAM,SAAS,GAAI,EAAE,EAC7CpsD,EAAA,KAAKgsD,IAAQ,KAAK,IAAK,IAAK,IAAK,MAAOpwD,EAAKE,GAAM,EAAI2S,GAAUquB,IAAcjhC,EAAKE,GAAM,EAAI2S,GAAUquB,CAAW,EAC5G,KAET,CAACnhC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAAI+D,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EACnDpsD,EAAA,KAAKmsD,IAAK,OAAOvwD,EAAK,EAAIE,GAAM,EAAI2S,GAAUquB,IAAcjhC,EAAK,EAAIE,GAAM,EAAI2S,GAAUquB,IAAe,EAAIjhC,EAAKE,GAAM,EAAIyS,GAAUquB,IAAc,EAAI/gC,EAAKE,GAAM,EAAIyS,GAAUquB,IAAejhC,EAAKE,GAAM,EAAIyS,GAAUquB,IAAc/gC,EAAKE,GAAM,EAAIyS,GAAUquB,CAAW,EAC1Q,CAAC/gC,EAAIC,EAAIH,EAAIC,EAAIH,EAAIC,CAAE,EAAImE,EAAA,KAAKosD,IAAM,SAAS,GAAI,EAAE,EACrDpsD,EAAA,KAAKgsD,IAAQ,OAAOpwD,EAAK,EAAIE,GAAM,EAAI2S,GAAUquB,IAAcjhC,EAAK,EAAIE,GAAM,EAAI2S,GAAUquB,IAAe,EAAIjhC,EAAKE,GAAM,EAAIyS,GAAUquB,IAAc,EAAI/gC,EAAKE,GAAM,EAAIyS,GAAUquB,IAAejhC,EAAKE,GAAM,EAAIyS,GAAUquB,IAAc/gC,EAAKE,GAAM,EAAIyS,GAAUquB,CAAW,EACtQ,IACR,CACD,WAAY,CACV,GAAI,KAAK,UACP,MAAO,GAET,MAAM51D,EAAM64B,EAAA,KAAKmsD,IACX9vC,EAASrc,EAAA,KAAKgsD,IACpB,GAAI,MAAMhsD,EAAA,KAAKosD,IAAM,CAAC,CAAC,GAAK,CAAC,KAAK,UAChC,OAAOhwD,EAAA,KAAKqvD,GAAA6B,IAAL,WAET,MAAM3nF,EAAS,GACfA,EAAO,KAAK,IAAIwB,EAAI,CAAC,CAAC,IAAIA,EAAI,CAAC,CAAC,EAAE,EAClC,QAASzB,EAAI,EAAGA,EAAIyB,EAAI,OAAQzB,GAAK,EAC/B,MAAMyB,EAAIzB,CAAC,CAAC,EACdC,EAAO,KAAK,IAAIwB,EAAIzB,EAAI,CAAC,CAAC,IAAIyB,EAAIzB,EAAI,CAAC,CAAC,EAAE,EAE1CC,EAAO,KAAK,IAAIwB,EAAIzB,CAAC,CAAC,IAAIyB,EAAIzB,EAAI,CAAC,CAAC,IAAIyB,EAAIzB,EAAI,CAAC,CAAC,IAAIyB,EAAIzB,EAAI,CAAC,CAAC,IAAIyB,EAAIzB,EAAI,CAAC,CAAC,IAAIyB,EAAIzB,EAAI,CAAC,CAAC,EAAE,EAGlG02B,EAAA,KAAKuvD,GAAA4B,IAAL,UAAmB5nF,GACnB,QAASD,EAAI22C,EAAO,OAAS,EAAG32C,GAAK,EAAGA,GAAK,EACvC,MAAM22C,EAAO32C,CAAC,CAAC,EACjBC,EAAO,KAAK,IAAI02C,EAAO32C,EAAI,CAAC,CAAC,IAAI22C,EAAO32C,EAAI,CAAC,CAAC,EAAE,EAEhDC,EAAO,KAAK,IAAI02C,EAAO32C,CAAC,CAAC,IAAI22C,EAAO32C,EAAI,CAAC,CAAC,IAAI22C,EAAO32C,EAAI,CAAC,CAAC,IAAI22C,EAAO32C,EAAI,CAAC,CAAC,IAAI22C,EAAO32C,EAAI,CAAC,CAAC,IAAI22C,EAAO32C,EAAI,CAAC,CAAC,EAAE,EAGpH,OAAA02B,EAAA,KAAKsvD,GAAA8B,IAAL,UAAqB7nF,GACdA,EAAO,KAAK,GAAG,CACvB,CAiBD,mBAAmB8nF,EAASp3B,EAAQ/wB,EAAKgmD,EAAaC,EAAavmD,EAAO,CACxE,OAAO,IAAI0oD,GAAgBD,EAASp3B,EAAQ/wB,EAAKgmD,EAAaC,EAAavmD,CAAK,CACjF,CACD,aAAc,OACZ,MAAM79B,EAAM64B,EAAA,KAAKmsD,IACX9vC,EAASrc,EAAA,KAAKgsD,IACd2B,EAAO3tD,EAAA,KAAKosD,IACZ,CAAC39C,EAAQC,EAAQouB,EAAYC,CAAW,EAAI/8B,EAAA,KAAK+rD,IACjD11B,EAAS,IAAI,gBAAcl8B,EAAA6F,EAAA,KAAK2sD,MAAL,YAAAxyD,EAAc,SAAU,GAAK,CAAC,EAC/D,QAASz0B,EAAI,EAAG05B,EAAKi3B,EAAO,OAAS,EAAG3wD,EAAI05B,EAAI15B,GAAK,EACnD2wD,EAAO3wD,CAAC,GAAKs6B,EAAA,KAAK2sD,IAAQjnF,CAAC,EAAI+oC,GAAUquB,EACzCzG,EAAO3wD,EAAI,CAAC,GAAKs6B,EAAA,KAAK2sD,IAAQjnF,EAAI,CAAC,EAAIgpC,GAAUquB,EAInD,GAFA1G,EAAOA,EAAO,OAAS,CAAC,GAAKr2B,EAAA,KAAKqsD,IAAS59C,GAAUquB,EACrDzG,EAAOA,EAAO,OAAS,CAAC,GAAKr2B,EAAA,KAAKssD,IAAS59C,GAAUquB,EACjD,MAAM4wB,EAAK,CAAC,CAAC,GAAK,CAAC,KAAK,UAC1B,OAAOvxD,EAAA,KAAKwvD,GAAAgC,IAAL,UAA0Bv3B,GAEnC,MAAMo3B,EAAU,IAAI,aAAaztD,EAAA,KAAKmsD,IAAK,OAAS,GAAKnsD,EAAA,KAAKgsD,IAAQ,MAAM,EAC5E,IAAI75D,EAAIhrB,EAAI,OACZ,QAASzB,EAAI,EAAGA,EAAIysB,EAAGzsB,GAAK,EAAG,CAC7B,GAAI,MAAMyB,EAAIzB,CAAC,CAAC,EAAG,CACjB+nF,EAAQ/nF,CAAC,EAAI+nF,EAAQ/nF,EAAI,CAAC,EAAI,IAC9B,QACD,CACD+nF,EAAQ/nF,CAAC,EAAIyB,EAAIzB,CAAC,EAClB+nF,EAAQ/nF,EAAI,CAAC,EAAIyB,EAAIzB,EAAI,CAAC,CAC3B,CACDysB,EAAIiK,EAAA,KAAK0vD,GAAA+B,IAAL,UAAoBJ,EAASt7D,GACjC,QAASzsB,EAAI22C,EAAO,OAAS,EAAG32C,GAAK,EAAGA,GAAK,EAC3C,QAASylD,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC7B,GAAI,MAAM9O,EAAO32C,EAAIylD,CAAC,CAAC,EAAG,CACxBsiC,EAAQt7D,CAAC,EAAIs7D,EAAQt7D,EAAI,CAAC,EAAI,IAC9BA,GAAK,EACL,QACD,CACDs7D,EAAQt7D,CAAC,EAAIkqB,EAAO32C,EAAIylD,CAAC,EACzBsiC,EAAQt7D,EAAI,CAAC,EAAIkqB,EAAO32C,EAAIylD,EAAI,CAAC,EACjCh5B,GAAK,CACN,CAEH,OAAAiK,EAAA,KAAKyvD,GAAAiC,IAAL,UAAsBL,EAASt7D,GACxB,KAAK,mBAAmBs7D,EAASp3B,EAAQr2B,EAAA,KAAK+rD,IAAM/rD,EAAA,KAAKysD,IAAczsD,EAAA,KAAKisD,IAAcjsD,EAAA,KAAKksD,GAAM,CAC7G,CAsBH,EA/MEH,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACOC,GAAA,YACAmB,GAAA,YACAlB,GAAA,YAkBPrB,GAAA,YAAAwC,GAAc,UAAG,CACf,MAAMC,EAAUjuD,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EAClC8B,EAAaluD,EAAA,KAAKosD,IAAM,SAAS,GAAI,EAAE,EACvC,CAACn7D,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAK+rD,IACnC,MAAO,EAAE/rD,EAAA,KAAKqsD,KAAU4B,EAAQ,CAAC,EAAIC,EAAW,CAAC,GAAK,EAAIj9D,GAAKrpB,GAAQo4B,EAAA,KAAKssD,KAAU2B,EAAQ,CAAC,EAAIC,EAAW,CAAC,GAAK,EAAI18D,GAAKpqB,GAAS44B,EAAA,KAAKqsD,KAAU6B,EAAW,CAAC,EAAID,EAAQ,CAAC,GAAK,EAAIh9D,GAAKrpB,GAAQo4B,EAAA,KAAKssD,KAAU4B,EAAW,CAAC,EAAID,EAAQ,CAAC,GAAK,EAAIz8D,GAAKpqB,CAAM,CACjQ,EAwFDqkF,GAAA,YAAA6B,GAAmB,UAAG,CACpB,KAAM,CAACr8D,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAK+rD,IAC7B,CAACoC,EAAUC,EAAUC,EAAaC,CAAW,EAAIlyD,EAAA,KAAKovD,GAAAwC,IAAL,WACvD,MAAO,KAAKhuD,EAAA,KAAKosD,IAAM,CAAC,EAAIn7D,GAAKrpB,CAAK,KAAKo4B,EAAA,KAAKosD,IAAM,CAAC,EAAI56D,GAAKpqB,CAAM,MAAM44B,EAAA,KAAKosD,IAAM,CAAC,EAAIn7D,GAAKrpB,CAAK,KAAKo4B,EAAA,KAAKosD,IAAM,CAAC,EAAI56D,GAAKpqB,CAAM,KAAK+mF,CAAQ,IAAIC,CAAQ,KAAKC,CAAW,IAAIC,CAAW,MAAMtuD,EAAA,KAAKosD,IAAM,EAAE,EAAIn7D,GAAKrpB,CAAK,KAAKo4B,EAAA,KAAKosD,IAAM,EAAE,EAAI56D,GAAKpqB,CAAM,MAAM44B,EAAA,KAAKosD,IAAM,EAAE,EAAIn7D,GAAKrpB,CAAK,KAAKo4B,EAAA,KAAKosD,IAAM,EAAE,EAAI56D,GAAKpqB,CAAM,IACnU,EACDskF,GAAA,YAAA8B,GAAe,SAAC7nF,EAAQ,CACtB,MAAM02C,EAASrc,EAAA,KAAKgsD,IACpBrmF,EAAO,KAAK,IAAI02C,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,IAAI,CAC3C,EACDsvC,GAAA,YAAA4B,GAAa,SAAC5nF,EAAQ,CACpB,KAAM,CAACsrB,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAK+rD,IAC7BkC,EAAUjuD,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EAClC8B,EAAaluD,EAAA,KAAKosD,IAAM,SAAS,GAAI,EAAE,EACvC,CAAC+B,EAAUC,EAAUC,EAAaC,CAAW,EAAIlyD,EAAA,KAAKovD,GAAAwC,IAAL,WACvDroF,EAAO,KAAK,KAAKsoF,EAAQ,CAAC,EAAIh9D,GAAKrpB,CAAK,KAAKqmF,EAAQ,CAAC,EAAIz8D,GAAKpqB,CAAM,KAAK+mF,CAAQ,IAAIC,CAAQ,KAAKC,CAAW,IAAIC,CAAW,MAAMJ,EAAW,CAAC,EAAIj9D,GAAKrpB,CAAK,KAAKsmF,EAAW,CAAC,EAAI18D,GAAKpqB,CAAM,EAAE,CAChM,EA6CDwkF,GAAA,YAAAgC,GAAoB,SAACv3B,EAAQ,CAC3B,MAAMs3B,EAAO3tD,EAAA,KAAKosD,IACZ,CAAC39C,EAAQC,EAAQouB,EAAYC,CAAW,EAAI/8B,EAAA,KAAK+rD,IACjD,CAACoC,EAAUC,EAAUC,EAAaC,CAAW,EAAIlyD,EAAA,KAAKovD,GAAAwC,IAAL,WACjDP,EAAU,IAAI,aAAa,EAAE,EACnC,OAAAA,EAAQ,IAAI,CAAC,IAAK,IAAK,IAAK,KAAME,EAAK,CAAC,EAAIl/C,GAAUquB,GAAa6wB,EAAK,CAAC,EAAIj/C,GAAUquB,EAAa,IAAK,IAAK,IAAK,KAAM4wB,EAAK,CAAC,EAAIl/C,GAAUquB,GAAa6wB,EAAK,CAAC,EAAIj/C,GAAUquB,EAAa,IAAK,IAAK,IAAK,IAAKoxB,EAAUC,EAAU,IAAK,IAAK,IAAK,IAAKC,EAAaC,EAAa,IAAK,IAAK,IAAK,KAAMX,EAAK,EAAE,EAAIl/C,GAAUquB,GAAa6wB,EAAK,EAAE,EAAIj/C,GAAUquB,EAAa,IAAK,IAAK,IAAK,KAAM4wB,EAAK,EAAE,EAAIl/C,GAAUquB,GAAa6wB,EAAK,EAAE,EAAIj/C,GAAUquB,CAAW,EAAG,CAAC,EAC9b,KAAK,mBAAmB0wB,EAASp3B,EAAQr2B,EAAA,KAAK+rD,IAAM/rD,EAAA,KAAKysD,IAAczsD,EAAA,KAAKisD,IAAcjsD,EAAA,KAAKksD,GAAM,CAC7G,EACDL,GAAA,YAAAiC,GAAgB,SAACL,EAASn5E,EAAK,CAC7B,MAAM+nC,EAASrc,EAAA,KAAKgsD,IACpB,OAAAyB,EAAQ,IAAI,CAAC,IAAK,IAAK,IAAK,IAAKpxC,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAAG/nC,CAAG,EACpDA,GAAO,CACf,EACDw3E,GAAA,YAAA+B,GAAc,SAACJ,EAASn5E,EAAK,CAC3B,MAAM25E,EAAUjuD,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EAClC8B,EAAaluD,EAAA,KAAKosD,IAAM,SAAS,GAAI,EAAE,EACvC,CAAC39C,EAAQC,EAAQouB,EAAYC,CAAW,EAAI/8B,EAAA,KAAK+rD,IACjD,CAACoC,EAAUC,EAAUC,EAAaC,CAAW,EAAIlyD,EAAA,KAAKovD,GAAAwC,IAAL,WACvD,OAAAP,EAAQ,IAAI,CAAC,IAAK,IAAK,IAAK,KAAMQ,EAAQ,CAAC,EAAIx/C,GAAUquB,GAAamxB,EAAQ,CAAC,EAAIv/C,GAAUquB,EAAa,IAAK,IAAK,IAAK,IAAKoxB,EAAUC,EAAU,IAAK,IAAK,IAAK,IAAKC,EAAaC,EAAa,IAAK,IAAK,IAAK,KAAMJ,EAAW,CAAC,EAAIz/C,GAAUquB,GAAaoxB,EAAW,CAAC,EAAIx/C,GAAUquB,CAAW,EAAGzoD,CAAG,EAChSA,GAAO,EACf,EAjMDyoB,EAdIsuD,GAcGuB,GAAY,GACnB7vD,EAfIsuD,GAeG0C,GAAY,GACnBhxD,EAhBIsuD,GAgBGwB,GAAO7sD,EAAAqrD,GAAiBuB,IAAY5sD,EAAAqrD,GAAiB0C,KAhB9D,IAAMQ,GAANlD,kCAiNA,MAAMqC,WAAwBvC,EAAQ,CAQpC,YAAYsC,EAASp3B,EAAQ/wB,EAAKgmD,EAAaC,EAAavmD,EAAO,CACjE,QA2DFjI,EAAA,KAAAyxD,IAnEAzxD,EAAA,KAAAgvD,GAAA,QACAhvD,EAAA,KAAAquD,GAAQ,IAAI,aAAa,CAAC,GAC1BruD,EAAA,KAAAkvD,GAAA,QACAlvD,EAAA,KAAAmvD,GAAA,QACAnvD,EAAA,KAAA4vD,GAAA,QACA5vD,EAAA,KAAA0vD,GAAA,QACA1vD,EAAA,KAAA0xD,GAAA,QAGEvuD,EAAA,KAAKuuD,GAAWhB,GAChBvtD,EAAA,KAAKysD,GAAUt2B,GACfn2B,EAAA,KAAK6rD,GAAOzmD,GACZpF,EAAA,KAAKusD,GAAenB,GACpBprD,EAAA,KAAK+rD,GAAeV,GACpBrrD,EAAA,KAAKgsD,GAASlnD,GACd,KAAK,UAAY,CAAC,IAAK,GAAG,EAC1B5I,EAAA,KAAKoyD,GAAAE,IAAL,UAAoB1pD,GACpB,KAAM,CAAC/T,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAKorD,IACnC,QAAS1lF,EAAI,EAAG05B,EAAKquD,EAAQ,OAAQ/nF,EAAI05B,EAAI15B,GAAK,EAChD+nF,EAAQ/nF,CAAC,GAAK+nF,EAAQ/nF,CAAC,EAAIurB,GAAKrpB,EAChC6lF,EAAQ/nF,EAAI,CAAC,GAAK+nF,EAAQ/nF,EAAI,CAAC,EAAI8rB,GAAKpqB,EAE1C,QAAS1B,EAAI,EAAG05B,EAAKi3B,EAAO,OAAQ3wD,EAAI05B,EAAI15B,GAAK,EAC/C2wD,EAAO3wD,CAAC,GAAK2wD,EAAO3wD,CAAC,EAAIurB,GAAKrpB,EAC9ByuD,EAAO3wD,EAAI,CAAC,GAAK2wD,EAAO3wD,EAAI,CAAC,EAAI8rB,GAAKpqB,CAEzC,CACD,WAAY,CACV,MAAMzB,EAAS,CAAC,IAAIq6B,EAAA,KAAKyuD,IAAS,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,CAAC,CAAC,EAAE,EAC1D,QAAS,EAAI,EAAGrvD,EAAKY,EAAA,KAAKyuD,IAAS,OAAQ,EAAIrvD,EAAI,GAAK,EAAG,CACzD,GAAI,MAAMY,EAAA,KAAKyuD,IAAS,CAAC,CAAC,EAAG,CAC3B9oF,EAAO,KAAK,IAAIq6B,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,EAAE,EAC9D,QACD,CACD9oF,EAAO,KAAK,IAAIq6B,EAAA,KAAKyuD,IAAS,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,IAAIzuD,EAAA,KAAKyuD,IAAS,EAAI,CAAC,CAAC,EAAE,CAC3J,CACD,OAAA9oF,EAAO,KAAK,GAAG,EACRA,EAAO,KAAK,GAAG,CACvB,CACD,UAAU,CAACw3E,EAAKC,EAAKH,EAAKC,CAAG,EAAG9+C,EAAU,CACxC,MAAMx2B,EAAQq1E,EAAME,EACd/1E,EAAS81E,EAAME,EACrB,IAAIqQ,EACAp3B,EACJ,OAAQj4B,EAAQ,CACd,IAAK,GACHqvD,EAAUtC,GAAQ,SAASnrD,EAAA,KAAKyuD,IAAUtR,EAAKD,EAAKt1E,EAAO,CAACR,CAAM,EAClEivD,EAAS80B,GAAQ,SAASnrD,EAAA,KAAK2sD,IAASxP,EAAKD,EAAKt1E,EAAO,CAACR,CAAM,EAChE,MACF,IAAK,IACHqmF,EAAUtC,GAAQ,gBAAgBnrD,EAAA,KAAKyuD,IAAUtR,EAAKC,EAAKx1E,EAAOR,CAAM,EACxEivD,EAAS80B,GAAQ,gBAAgBnrD,EAAA,KAAK2sD,IAASxP,EAAKC,EAAKx1E,EAAOR,CAAM,EACtE,MACF,IAAK,KACHqmF,EAAUtC,GAAQ,SAASnrD,EAAA,KAAKyuD,IAAUxR,EAAKG,EAAK,CAACx1E,EAAOR,CAAM,EAClEivD,EAAS80B,GAAQ,SAASnrD,EAAA,KAAK2sD,IAAS1P,EAAKG,EAAK,CAACx1E,EAAOR,CAAM,EAChE,MACF,IAAK,KACHqmF,EAAUtC,GAAQ,gBAAgBnrD,EAAA,KAAKyuD,IAAUxR,EAAKC,EAAK,CAACt1E,EAAO,CAACR,CAAM,EAC1EivD,EAAS80B,GAAQ,gBAAgBnrD,EAAA,KAAK2sD,IAAS1P,EAAKC,EAAK,CAACt1E,EAAO,CAACR,CAAM,EACxE,KACH,CACD,MAAO,CACL,QAAS,MAAM,KAAKqmF,CAAO,EAC3B,OAAQ,CAAC,MAAM,KAAKp3B,CAAM,CAAC,CACjC,CACG,CA+CD,IAAI,KAAM,CACR,OAAOr2B,EAAA,KAAKorD,GACb,CACD,YAAYpsC,EAAO1Z,EAAKgmD,EAAazE,EAAW7hD,EAAOumD,EAAc,EAAG,CACtE,OAAO,IAAIgD,GAAiBvvC,EAAO1Z,EAAKgmD,EAAazE,EAAW7hD,EAAOumD,CAAW,CACnF,CACD,cAAc1E,EAAW0E,EAAa,CACpC,KAAM,CAACt6D,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAKorD,IAC7B,CAAC38C,EAAQC,EAAQouB,EAAYC,CAAW,EAAI/8B,EAAA,KAAK+rD,IACjD5wD,EAAKvzB,EAAQk1D,EACb1hC,EAAKh0B,EAAS21D,EACd5qB,EAAKlhB,EAAI6rC,EAAaruB,EACtB2D,EAAK5gB,EAAIurC,EAAcruB,EACvBigD,EAAW,KAAK,YAAY,CAChC,EAAG3uD,EAAA,KAAK2sD,IAAQ,CAAC,EAAIxxD,EAAKgX,EAC1B,EAAGnS,EAAA,KAAK2sD,IAAQ,CAAC,EAAIvxD,EAAKgX,CAC3B,EAAEpS,EAAA,KAAK+rD,IAAM/rD,EAAA,KAAKysD,IAAc5F,EAAW7mD,EAAA,KAAKksD,IAAQX,GAAevrD,EAAA,KAAKisD,GAAY,EACzF,QAASvmF,EAAI,EAAGA,EAAIs6B,EAAA,KAAK2sD,IAAQ,OAAQjnF,GAAK,EAC5CipF,EAAS,IAAI,CACX,EAAG3uD,EAAA,KAAK2sD,IAAQjnF,CAAC,EAAIy1B,EAAKgX,EAC1B,EAAGnS,EAAA,KAAK2sD,IAAQjnF,EAAI,CAAC,EAAI01B,EAAKgX,CACtC,CAAO,EAEH,OAAOu8C,EAAS,aACjB,CACH,CA1IE5C,GAAA,YACAX,GAAA,YACAa,GAAA,YACAC,GAAA,YACAS,GAAA,YACAF,GAAA,YACAgC,GAAA,YA6DAD,GAAA,YAAAE,GAAc,SAAC1pD,EAAO,CACpB,MAAMyoD,EAAUztD,EAAA,KAAKyuD,IACrB,IAAIppD,EAAQooD,EAAQ,CAAC,EACjBroD,EAAQqoD,EAAQ,CAAC,EACjBjyB,EAAOn2B,EACPypB,EAAO1pB,EACPq2B,EAAOp2B,EACP0pB,EAAO3pB,EACPwpD,EAAavpD,EACbwpD,EAAazpD,EACjB,MAAM0pD,EAAc9pD,EAAQ,KAAK,IAAM,KAAK,IAC5C,QAASt/B,EAAI,EAAG05B,EAAKquD,EAAQ,OAAQ/nF,EAAI05B,EAAI15B,GAAK,EAAG,CACnD,GAAI,MAAM+nF,EAAQ/nF,CAAC,CAAC,EAClB81D,EAAO,KAAK,IAAIA,EAAMiyB,EAAQ/nF,EAAI,CAAC,CAAC,EACpCopD,EAAO,KAAK,IAAIA,EAAM2+B,EAAQ/nF,EAAI,CAAC,CAAC,EACpC+1D,EAAO,KAAK,IAAIA,EAAMgyB,EAAQ/nF,EAAI,CAAC,CAAC,EACpCqpD,EAAO,KAAK,IAAIA,EAAM0+B,EAAQ/nF,EAAI,CAAC,CAAC,EAChCmpF,EAAapB,EAAQ/nF,EAAI,CAAC,GAC5BkpF,EAAanB,EAAQ/nF,EAAI,CAAC,EAC1BmpF,EAAapB,EAAQ/nF,EAAI,CAAC,GACjBmpF,IAAepB,EAAQ/nF,EAAI,CAAC,IACrCkpF,EAAaE,EAAYF,EAAYnB,EAAQ/nF,EAAI,CAAC,CAAC,OAEhD,CACL,MAAMqnD,EAAO/zC,GAAK,kBAAkBqsB,EAAOD,EAAO,GAAGqoD,EAAQ,MAAM/nF,EAAGA,EAAI,CAAC,CAAC,EAC5E81D,EAAO,KAAK,IAAIA,EAAMzO,EAAK,CAAC,CAAC,EAC7B+B,EAAO,KAAK,IAAIA,EAAM/B,EAAK,CAAC,CAAC,EAC7B0O,EAAO,KAAK,IAAIA,EAAM1O,EAAK,CAAC,CAAC,EAC7BgC,EAAO,KAAK,IAAIA,EAAMhC,EAAK,CAAC,CAAC,EACzB8hC,EAAa9hC,EAAK,CAAC,GACrB6hC,EAAa7hC,EAAK,CAAC,EACnB8hC,EAAa9hC,EAAK,CAAC,GACV8hC,IAAe9hC,EAAK,CAAC,IAC9B6hC,EAAaE,EAAYF,EAAY7hC,EAAK,CAAC,CAAC,EAE/C,CACD1nB,EAAQooD,EAAQ/nF,EAAI,CAAC,EACrB0/B,EAAQqoD,EAAQ/nF,EAAI,CAAC,CACtB,CACD,MAAMqnD,EAAO/sB,EAAA,KAAKorD,IAClBr+B,EAAK,CAAC,EAAIyO,EAAOx7B,EAAA,KAAKisD,IACtBl/B,EAAK,CAAC,EAAI+B,EAAO9uB,EAAA,KAAKisD,IACtBl/B,EAAK,CAAC,EAAI0O,EAAOD,EAAO,EAAIx7B,EAAA,KAAKisD,IACjCl/B,EAAK,CAAC,EAAIgC,EAAOD,EAAO,EAAI9uB,EAAA,KAAKisD,IACjC,KAAK,UAAY,CAAC2C,EAAYC,CAAU,CACzC,gDA+BH,MAAME,EAAkB,CAKtB,YAAYhqD,EAAOu4C,EAAc,EAAGiO,EAAc,EAAGvmD,EAAQ,GAAM,CAsDnEjI,EAAA,KAAAiyD,IA+CAjyD,EAAA,KAAAkyD,IAkBAlyD,EAAA,KAAAmyD,IAIAnyD,EAAA,KAAAoyD,IAuBApyD,EAAA,KAAAqyD,IAtJAryD,EAAA,KAAAgvD,GAAA,QACAhvD,EAAA,KAAAsyD,GAAA,QACAtyD,EAAA,KAAAuyD,GAAiB,IACjBvyD,EAAA,KAAAwyD,GAAa,IAEX,IAAI/zB,EAAO,IACPC,EAAO,KACP3M,EAAO,IACPC,EAAO,KAEX,MAAMygC,EAAU,IAAM,CADG,EAEzB,SAAW,CACT,EAAAv+D,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,CACD,IAAI29B,EAAO,CACV,MAAMjJ,EAAK,KAAK,OAAO7K,EAAIqsD,GAAekS,CAAO,EAAIA,EAC/CxzD,EAAK,KAAK,MAAM/K,EAAIrpB,EAAQ01E,GAAekS,CAAO,EAAIA,EACtDzzD,EAAK,KAAK,OAAOvK,EAAI8rD,GAAekS,CAAO,EAAIA,EAC/CvzD,GAAK,KAAK,MAAMzK,EAAIpqB,EAASk2E,GAAekS,CAAO,EAAIA,EACvDv8E,GAAO,CAAC6oB,EAAIC,EAAIE,GAAI,EAAI,EACxBqgB,GAAQ,CAACtgB,EAAID,EAAIE,GAAI,EAAK,EAChC+D,EAAA,KAAKsvD,IAAe,KAAKr8E,GAAMqpC,EAAK,EACpCkf,EAAO,KAAK,IAAIA,EAAM1/B,CAAE,EACxB2/B,EAAO,KAAK,IAAIA,EAAMz/B,CAAE,EACxB8yB,EAAO,KAAK,IAAIA,EAAM/yB,CAAE,EACxBgzB,EAAO,KAAK,IAAIA,EAAM9yB,EAAE,CACzB,CACD,MAAM62B,EAAY2I,EAAOD,EAAO,EAAI+vB,EAC9Bx4B,EAAahE,EAAOD,EAAO,EAAIy8B,EAC/BkE,EAAcj0B,EAAO+vB,EACrBmE,EAAc5gC,EAAOy8B,EACrBoE,EAAW3vD,EAAA,KAAKsvD,IAAe,GAAGtqD,EAAQ,GAAK,EAAE,EACjD4qD,EAAY,CAACD,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,EAC3C,UAAWE,KAAQ7vD,EAAA,KAAKsvD,IAAgB,CACtC,KAAM,CAACr+D,EAAG8K,EAAIE,CAAE,EAAI4zD,EACpBA,EAAK,CAAC,GAAK5+D,EAAIw+D,GAAe38B,EAC9B+8B,EAAK,CAAC,GAAK9zD,EAAK2zD,GAAe38B,EAC/B88B,EAAK,CAAC,GAAK5zD,EAAKyzD,GAAe38B,CAChC,CACD7yB,EAAA,KAAK6rD,GAAO,IAAI,aAAa,CAAC0D,EAAaC,EAAa58B,EAAWC,CAAU,CAAC,GAC9E7yB,EAAA,KAAKmvD,GAAaO,EACnB,CACD,aAAc,CACZ5vD,EAAA,KAAKsvD,IAAe,KAAK,CAAC9kF,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,GAAKD,EAAE,CAAC,EAAIC,EAAE,CAAC,GAAKD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAC5E,MAAMqlF,EAAuB,GAC7B,UAAWD,KAAQ7vD,EAAA,KAAKsvD,IAClBO,EAAK,CAAC,GACRC,EAAqB,KAAK,GAAG1zD,EAAA,KAAKgzD,GAAAW,IAAL,UAAgBF,EAAK,EAClDzzD,EAAA,KAAK8yD,GAAAc,IAAL,UAAaH,KAEbzzD,EAAA,KAAK+yD,GAAAc,IAAL,UAAaJ,GACbC,EAAqB,KAAK,GAAG1zD,EAAA,KAAKgzD,GAAAW,IAAL,UAAgBF,EAAK,GAGtD,OAAOzzD,EAAA,KAAK4yD,GAAAkB,IAAL,UAAkBJ,EAC1B,CA6HH,CAtLE/D,GAAA,YACAsD,GAAA,YACAC,GAAA,YACAC,GAAA,YAuDAP,GAAA,YAAAkB,GAAY,SAACJ,EAAsB,CACjC,MAAMK,EAAQ,GACRC,EAAW,IAAI,IACrB,UAAWP,KAAQC,EAAsB,CACvC,KAAM,CAAC7+D,EAAG8K,EAAIE,CAAE,EAAI4zD,EACpBM,EAAM,KAAK,CAACl/D,EAAG8K,EAAI8zD,CAAI,EAAG,CAAC5+D,EAAGgL,EAAI4zD,CAAI,CAAC,CACxC,CACDM,EAAM,KAAK,CAAC,EAAG1lF,IAAM,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,EAAE,CAAC,EAAIA,EAAE,CAAC,CAAC,EAC/C,QAAS/E,EAAI,EAAG05B,EAAK+wD,EAAM,OAAQzqF,EAAI05B,EAAI15B,GAAK,EAAG,CACjD,MAAM2qF,EAAQF,EAAMzqF,CAAC,EAAE,CAAC,EAClB4qF,EAAQH,EAAMzqF,EAAI,CAAC,EAAE,CAAC,EAC5B2qF,EAAM,KAAKC,CAAK,EAChBA,EAAM,KAAKD,CAAK,EAChBD,EAAS,IAAIC,CAAK,EAClBD,EAAS,IAAIE,CAAK,CACnB,CACD,MAAMC,EAAW,GACjB,IAAI9C,EACJ,KAAO2C,EAAS,KAAO,GAAG,CACxB,MAAMP,EAAOO,EAAS,OAAQ,EAAC,KAAI,EAAG,MACtC,GAAI,CAACn/D,EAAG8K,EAAIE,EAAIo0D,EAAOC,CAAK,EAAIT,EAChCO,EAAS,OAAOP,CAAI,EACpB,IAAIjB,EAAa39D,EACb49D,EAAa9yD,EAGjB,IAFA0xD,EAAU,CAACx8D,EAAGgL,CAAE,EAChBs0D,EAAS,KAAK9C,CAAO,IACR,CACX,IAAI5kF,EACJ,GAAIunF,EAAS,IAAIC,CAAK,EACpBxnF,EAAIwnF,UACKD,EAAS,IAAIE,CAAK,EAC3BznF,EAAIynF,MAEJ,OAEFF,EAAS,OAAOvnF,CAAC,EACjB,CAACooB,EAAG8K,EAAIE,EAAIo0D,EAAOC,CAAK,EAAIznF,EACxB+lF,IAAe39D,IACjBw8D,EAAQ,KAAKmB,EAAYC,EAAY59D,EAAG49D,IAAe9yD,EAAKA,EAAKE,CAAE,EACnE2yD,EAAa39D,GAEf49D,EAAaA,IAAe9yD,EAAKE,EAAKF,CACvC,CACD0xD,EAAQ,KAAKmB,EAAYC,CAAU,CACpC,CACD,OAAO,IAAI2B,GAAiBD,EAAUvwD,EAAA,KAAK+rD,IAAM/rD,EAAA,KAAKqvD,GAAU,CACjE,EACDJ,GAAA,YAAAwB,GAAa,SAACj/D,EAAG,CACf,MAAM5X,EAAQomB,EAAA,KAAKuvD,IACnB,IAAI1vD,EAAQ,EACRC,EAAMlmB,EAAM,OAAS,EACzB,KAAOimB,GAASC,GAAK,CACnB,MAAM4wD,EAAS7wD,EAAQC,GAAO,EACxB/D,EAAKniB,EAAM82E,CAAM,EAAE,CAAC,EAC1B,GAAI30D,IAAOvK,EACT,OAAOk/D,EAEL30D,EAAKvK,EACPqO,EAAQ6wD,EAAS,EAEjB5wD,EAAM4wD,EAAS,CAElB,CACD,OAAO5wD,EAAM,CACd,EACDovD,GAAA,YAAAc,GAAO,SAAC,EAAGj0D,EAAIE,CAAE,EAAG,CAClB,MAAMgmD,EAAQ7lD,EAAA,KAAK6yD,GAAAwB,IAAL,UAAmB10D,GACjCiE,EAAA,KAAKuvD,IAAW,OAAOtN,EAAO,EAAG,CAAClmD,EAAIE,CAAE,CAAC,CAC1C,EACDkzD,GAAA,YAAAc,GAAO,SAAC,EAAGl0D,EAAIE,CAAE,EAAG,CAClB,MAAMgmD,EAAQ7lD,EAAA,KAAK6yD,GAAAwB,IAAL,UAAmB10D,GACjC,QAASr2B,EAAIu8E,EAAOv8E,EAAIs6B,EAAA,KAAKuvD,IAAW,OAAQ7pF,IAAK,CACnD,KAAM,CAACm6B,EAAOC,CAAG,EAAIE,EAAA,KAAKuvD,IAAW7pF,CAAC,EACtC,GAAIm6B,IAAU9D,EACZ,MAEF,GAAI8D,IAAU9D,GAAM+D,IAAQ7D,EAAI,CAC9B+D,EAAA,KAAKuvD,IAAW,OAAO7pF,EAAG,CAAC,EAC3B,MACD,CACF,CACD,QAASA,EAAIu8E,EAAQ,EAAGv8E,GAAK,EAAGA,IAAK,CACnC,KAAM,CAACm6B,EAAOC,CAAG,EAAIE,EAAA,KAAKuvD,IAAW7pF,CAAC,EACtC,GAAIm6B,IAAU9D,EACZ,MAEF,GAAI8D,IAAU9D,GAAM+D,IAAQ7D,EAAI,CAC9B+D,EAAA,KAAKuvD,IAAW,OAAO7pF,EAAG,CAAC,EAC3B,MACD,CACF,CACF,EACD0pF,GAAA,YAAAW,GAAU,SAACF,EAAM,CACf,KAAM,CAAC5+D,EAAG8K,EAAIE,CAAE,EAAI4zD,EACdzhF,EAAU,CAAC,CAAC6iB,EAAG8K,EAAIE,CAAE,CAAC,EACtBgmD,EAAQ7lD,EAAA,KAAK6yD,GAAAwB,IAAL,UAAmBx0D,GACjC,QAASv2B,EAAI,EAAGA,EAAIu8E,EAAOv8E,IAAK,CAC9B,KAAM,CAACm6B,EAAOC,CAAG,EAAIE,EAAA,KAAKuvD,IAAW7pF,CAAC,EACtC,QAASylD,EAAI,EAAGyH,EAAKxkD,EAAQ,OAAQ+8C,EAAIyH,EAAIzH,IAAK,CAChD,KAAM,CAAG,CAAAhvB,EAAIw0D,CAAE,EAAIviF,EAAQ+8C,CAAC,EAC5B,GAAI,EAAArrB,GAAO3D,GAAMw0D,GAAM9wD,GAGvB,IAAI1D,GAAM0D,EAAO,CACf,GAAI8wD,EAAK7wD,EACP1xB,EAAQ+8C,CAAC,EAAE,CAAC,EAAIrrB,MACX,CACL,GAAI8yB,IAAO,EACT,MAAO,GAETxkD,EAAQ,OAAO+8C,EAAG,CAAC,EACnBA,IACAyH,GACD,CACD,QACD,CACDxkD,EAAQ+8C,CAAC,EAAE,CAAC,EAAItrB,EACZ8wD,EAAK7wD,GACP1xB,EAAQ,KAAK,CAAC6iB,EAAG6O,EAAK6wD,CAAE,CAAC,EAE5B,CACF,CACD,OAAOviF,CACR,YAEH,MAAMoiF,WAAyBrF,EAAQ,CAGrC,YAAYoF,EAAUjrD,EAAKsqD,EAAW,CACpC,QAHF7yD,EAAA,KAAAgvD,GAAA,QACAhvD,EAAA,KAAA6zD,GAAA,QAGE1wD,EAAA,KAAK0wD,GAAYL,GACjBrwD,EAAA,KAAK6rD,GAAOzmD,GACZ,KAAK,UAAYsqD,CAClB,CACD,WAAY,CACV,MAAMjqF,EAAS,GACf,UAAWkrF,KAAW7wD,EAAA,KAAK4wD,IAAW,CACpC,GAAI,CAACE,EAAOC,CAAK,EAAIF,EACrBlrF,EAAO,KAAK,IAAImrF,CAAK,IAAIC,CAAK,EAAE,EAChC,QAASrrF,EAAI,EAAGA,EAAImrF,EAAQ,OAAQnrF,GAAK,EAAG,CAC1C,MAAMurB,EAAI4/D,EAAQnrF,CAAC,EACb8rB,EAAIq/D,EAAQnrF,EAAI,CAAC,EACnBurB,IAAM6/D,GACRnrF,EAAO,KAAK,IAAI6rB,CAAC,EAAE,EACnBu/D,EAAQv/D,GACCA,IAAMu/D,IACfprF,EAAO,KAAK,IAAIsrB,CAAC,EAAE,EACnB6/D,EAAQ7/D,EAEX,CACDtrB,EAAO,KAAK,GAAG,CAChB,CACD,OAAOA,EAAO,KAAK,GAAG,CACvB,CACD,UAAU,CAACw3E,EAAKC,EAAKH,EAAKC,CAAG,EAAGvR,EAAW,CACzC,MAAM4kB,EAAW,GACX3oF,EAAQq1E,EAAME,EACd/1E,EAAS81E,EAAME,EACrB,UAAWqQ,KAAWztD,EAAA,KAAK4wD,IAAW,CACpC,MAAMv6B,EAAS,IAAI,MAAMo3B,EAAQ,MAAM,EACvC,QAAS/nF,EAAI,EAAGA,EAAI+nF,EAAQ,OAAQ/nF,GAAK,EACvC2wD,EAAO3wD,CAAC,EAAIy3E,EAAMsQ,EAAQ/nF,CAAC,EAAIkC,EAC/ByuD,EAAO3wD,EAAI,CAAC,EAAIw3E,EAAMuQ,EAAQ/nF,EAAI,CAAC,EAAI0B,EAEzCmpF,EAAS,KAAKl6B,CAAM,CACrB,CACD,OAAOk6B,CACR,CACD,IAAI,KAAM,CACR,OAAOvwD,EAAA,KAAK+rD,GACb,CACD,IAAI,wBAAyB,CAC3B,MAAO,CAAC,kBAAkB,CAC3B,CACH,CAhDEA,GAAA,YACA6E,GAAA,YAgDF,MAAMI,WAA8BzC,EAAiB,CACnD,mBAAmBd,EAASp3B,EAAQ/wB,EAAKgmD,EAAaC,EAAavmD,EAAO,CACxE,OAAO,IAAIisD,GAAqBxD,EAASp3B,EAAQ/wB,EAAKgmD,EAAaC,EAAavmD,CAAK,CACtF,CACH,CACA,MAAMisD,WAA6BvD,EAAgB,CACjD,YAAY1uC,EAAO1Z,EAAKgmD,EAAazE,EAAW7hD,EAAOumD,EAAc,EAAG,CACtE,OAAO,IAAIyF,GAAsBhyC,EAAO1Z,EAAKgmD,EAAazE,EAAW7hD,EAAOumD,CAAW,CACxF,CACH,6EAMA,MAAM2F,GAAN,MAAMA,EAAY,CAgBhB,YAAY,CACV,OAAA1uD,EAAS,KACT,UAAAkC,EAAY,IAChB,EAAK,CA8CH3H,EAAA,KAAAo0D,IAiCAp0D,EAAA,KAAAq0D,IAwDAr0D,EAAA,KAAAimD,IAGAjmD,EAAA,KAAAs0D,IAmBAt0D,EAAA,KAAAwG,IAWAxG,EAAA,KAAIu0D,IA1LJv0D,EAAA,KAAAw0D,GAAU,MACVx0D,EAAA,KAAAy0D,GAAgB,MAChBz0D,EAAA,KAAA00D,GAAA,QACA10D,EAAA,KAAA20D,GAAY,MACZ30D,EAAA,KAAA40D,GAA2B,IAC3B50D,EAAA,KAAA60D,GAAqB,IACrB70D,EAAA,KAAAiG,GAAU,MACVjG,EAAA,KAAA80D,GAAA,QACA90D,EAAA,KAAA+0D,GAAkB,MAClB/0D,EAAA,KAAAuH,GAAa,MACbvH,EAAA,KAAA6d,GAAA,cASMpY,GACFtC,EAAA,KAAK0xD,GAAqB,IAC1B1xD,EAAA,KAAK0a,GAAQjmB,GAA2B,iBACxCuL,EAAA,KAAK8C,GAAUR,KAEftC,EAAA,KAAK0xD,GAAqB,IAC1B1xD,EAAA,KAAK0a,GAAQjmB,GAA2B,0BAE1CuL,EAAA,KAAKoE,IAAa9B,GAAA,YAAAA,EAAQ,aAAckC,GACxCxE,EAAA,KAAK2xD,GAAY7xD,EAAA,KAAKsE,IAAW,WACjCpE,EAAA,KAAKuxD,IAAgBjvD,GAAA,YAAAA,EAAQ,UAASrI,EAAA6F,EAAA,KAAKsE,MAAL,YAAAnK,EAAiB,gBAAgB,SAAS,OAAO,QAAS,WAChG6F,EAAAkxD,GAAYa,KAAZ7xD,EAAAgxD,GAAYa,GAAe,OAAO,OAAO,CACvC,KAAM,gCACN,MAAO,iCACP,KAAM,gCACN,IAAK,+BACL,OAAQ,iCACd,CAAK,EACF,CAzBD,WAAW,kBAAmB,CAC5B,OAAOx6D,GAAO,KAAM,mBAAoB,IAAIkQ,GAAgB,CAAC,CAAC,CAAC,SAAU,YAAY,EAAGypD,GAAY,UAAU,yBAAyB,EAAG,CAAC,CAAC,IAAK,OAAO,EAAGA,GAAY,UAAU,wBAAwB,EAAG,CAAC,CAAC,YAAa,aAAc,gBAAiB,gBAAgB,EAAGA,GAAY,UAAU,WAAW,EAAG,CAAC,CAAC,UAAW,YAAa,cAAe,eAAe,EAAGA,GAAY,UAAU,eAAe,EAAG,CAAC,CAAC,OAAQ,UAAU,EAAGA,GAAY,UAAU,gBAAgB,EAAG,CAAC,CAAC,MAAO,SAAS,EAAGA,GAAY,UAAU,UAAU,CAAC,CAAC,CAAC,CAC7gB,CAwBD,cAAe,CACb,MAAMrtD,EAAS3D,EAAA,KAAKqxD,GAAU,SAAS,cAAc,QAAQ,GAC7D1tD,EAAO,UAAY,cACnBA,EAAO,SAAW,IAClBA,EAAO,aAAa,eAAgB,iCAAiC,EACrEA,EAAO,aAAa,gBAAiB,EAAI,EACzC,MAAMP,EAAStD,EAAA,KAAKsE,IAAW,QAC/BT,EAAO,iBAAiB,QAASzH,EAAA,KAAKi1D,GAAAW,IAAc,KAAK,IAAI,EAAG,CAC9D,OAAA1uD,CACN,CAAK,EACDO,EAAO,iBAAiB,UAAWzH,EAAA,KAAK4mD,GAAAM,IAAS,KAAK,IAAI,EAAG,CAC3D,OAAAhgD,CACN,CAAK,EACD,MAAM2uD,EAAS/xD,EAAA,KAAKsxD,GAAgB,SAAS,cAAc,MAAM,GACjE,OAAAS,EAAO,UAAY,SACnBA,EAAO,aAAa,cAAe,EAAI,EACvCA,EAAO,MAAM,gBAAkBjyD,EAAA,KAAKyxD,IACpC5tD,EAAO,OAAOouD,CAAM,EACbpuD,CACR,CACD,oBAAqB,CACnB,MAAMquD,EAAWhyD,EAAA,KAAKwxD,GAAYt1D,EAAA,KAAK+0D,GAAAgB,IAAL,YAClC,OAAAD,EAAS,aAAa,mBAAoB,YAAY,EACtDA,EAAS,aAAa,kBAAmB,2BAA2B,EAC7DA,CACR,CA0CD,yBAAyBjtF,EAAO,CAC9B,GAAIA,EAAM,SAAW+6B,EAAA,KAAKuxD,IAAS,CACjCn1D,EAAA,KAAKi1D,GAAAW,IAAL,UAAmB/sF,GACnB,MACD,CACD,MAAM67B,EAAQ77B,EAAM,OAAO,aAAa,YAAY,EAC/C67B,GAGL1E,EAAA,KAAKg1D,GAAAgB,IAAL,UAAkBtxD,EAAO77B,EAC1B,CACD,YAAYA,EAAO,SACjB,GAAI,CAAC+6B,EAAA,KAAKsxD,GAAAe,IAAoB,CAC5Bj2D,EAAA,KAAKi1D,GAAAW,IAAL,UAAmB/sF,GACnB,MACD,CACD,GAAIA,EAAM,SAAW+6B,EAAA,KAAKuxD,IAAS,EACjCp3D,EAAA6F,EAAA,KAAK0xD,IAAU,aAAf,MAAAv3D,EAA2B,QAC3B,MACD,EACDD,EAAAj1B,EAAM,OAAO,cAAb,MAAAi1B,EAA0B,OAC3B,CACD,gBAAgBj1B,EAAO,SACrB,GAAIA,EAAM,WAAWk1B,EAAA6F,EAAA,KAAK0xD,MAAL,YAAAv3D,EAAgB,aAAcl1B,EAAM,SAAW+6B,EAAA,KAAKuxD,IAAS,CAC5EvxD,EAAA,KAAKsxD,GAAAe,KACP,KAAK,0BAAyB,EAEhC,MACD,CACIryD,EAAA,KAAKsxD,GAAAe,KACRj2D,EAAA,KAAKi1D,GAAAW,IAAL,UAAmB/sF,IAErBi1B,EAAAj1B,EAAM,OAAO,kBAAb,MAAAi1B,EAA8B,OAC/B,CACD,iBAAiBj1B,EAAO,OACtB,GAAI,CAAC+6B,EAAA,KAAKsxD,GAAAe,IAAoB,CAC5Bj2D,EAAA,KAAKi1D,GAAAW,IAAL,UAAmB/sF,GACnB,MACD,EACDk1B,EAAA6F,EAAA,KAAK0xD,IAAU,aAAf,MAAAv3D,EAA2B,OAC5B,CACD,WAAWl1B,EAAO,OAChB,GAAI,CAAC+6B,EAAA,KAAKsxD,GAAAe,IAAoB,CAC5Bj2D,EAAA,KAAKi1D,GAAAW,IAAL,UAAmB/sF,GACnB,MACD,EACDk1B,EAAA6F,EAAA,KAAK0xD,IAAU,YAAf,MAAAv3D,EAA0B,OAC3B,CA6BD,cAAe,UACbA,EAAA6F,EAAA,KAAK0xD,MAAL,MAAAv3D,EAAgB,UAAU,IAAI,WAC9BD,EAAA8F,EAAA,KAAK8xD,MAAL,MAAA53D,EAAsB,QACtBgG,EAAA,KAAK4xD,GAAkB,KACxB,CAID,2BAA4B,OAC1B,GAAI,CAAA9xD,EAAA,KAAK4xD,IAGT,IAAI,CAAC5xD,EAAA,KAAKsxD,GAAAe,IAAoB,EAC5Bl4D,EAAA6F,EAAA,KAAKgD,MAAL,MAAA7I,EAAc,WACd,MACD,CACD,KAAK,aAAY,EACjB6F,EAAA,KAAKuxD,IAAQ,MAAM,CACjB,cAAe,GACf,aAAcvxD,EAAA,KAAK2xD,GACzB,CAAK,EACF,CACD,YAAY7wD,EAAO,CAIjB,GAHId,EAAA,KAAKwxD,MACPxxD,EAAA,KAAKwxD,IAAc,MAAM,gBAAkB1wD,GAEzC,CAACd,EAAA,KAAK0xD,IACR,OAEF,MAAMhsF,EAAIs6B,EAAA,KAAKsE,IAAW,gBAAgB,OAAM,EAChD,UAAW4Y,KAASld,EAAA,KAAK0xD,IAAU,SACjCx0C,EAAM,aAAa,gBAAiBx3C,EAAE,OAAO,QAAUo7B,CAAK,CAE/D,CACD,SAAU,UACR3G,EAAA6F,EAAA,KAAKuxD,MAAL,MAAAp3D,EAAc,SACd+F,EAAA,KAAKqxD,GAAU,MACfrxD,EAAA,KAAKsxD,GAAgB,OACrBt3D,EAAA8F,EAAA,KAAK0xD,MAAL,MAAAx3D,EAAgB,SAChBgG,EAAA,KAAKwxD,GAAY,KAClB,CACH,EA9NEH,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACA5uD,GAAA,YACA6uD,GAAA,YACAC,GAAA,YACAxtD,GAAA,YACAsW,GAAA,YACOm3C,GAAA,YAqDPZ,GAAA,YAAAgB,GAAgB,UAAG,CACjB,MAAM7wD,EAAM,SAAS,cAAc,KAAK,EAClCgC,EAAStD,EAAA,KAAKsE,IAAW,QAC/BhD,EAAI,iBAAiB,cAAelK,GAAe,CACjD,OAAAkM,CACN,CAAK,EACDhC,EAAI,UAAY,WAChBA,EAAI,KAAO,UACXA,EAAI,aAAa,uBAAwB,EAAK,EAC9CA,EAAI,aAAa,mBAAoB,UAAU,EAC/CA,EAAI,aAAa,eAAgB,mCAAmC,EACpE,SAAW,CAACpvB,EAAM4uB,CAAK,IAAKd,EAAA,KAAKsE,IAAW,gBAAiB,CAC3D,MAAMT,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,SAAW,IAClBA,EAAO,KAAO,SACdA,EAAO,aAAa,aAAc/C,CAAK,EACvC+C,EAAO,MAAQ3xB,EACf2xB,EAAO,aAAa,eAAgB7D,EAAAkxD,GAAYa,IAAW7/E,CAAI,CAAC,EAChE,MAAM+/E,EAAS,SAAS,cAAc,MAAM,EAC5CpuD,EAAO,OAAOouD,CAAM,EACpBA,EAAO,UAAY,SACnBA,EAAO,MAAM,gBAAkBnxD,EAC/B+C,EAAO,aAAa,gBAAiB/C,IAAUd,EAAA,KAAKyxD,GAAa,EACjE5tD,EAAO,iBAAiB,QAASzH,EAAA,KAAKg1D,GAAAgB,IAAa,KAAK,KAAMtxD,CAAK,EAAG,CACpE,OAAAwC,CACR,CAAO,EACDhC,EAAI,OAAOuC,CAAM,CAClB,CACD,OAAAvC,EAAI,iBAAiB,UAAWlF,EAAA,KAAK4mD,GAAAM,IAAS,KAAK,IAAI,EAAG,CACxD,OAAAhgD,CACN,CAAK,EACMhC,CACR,EACD8vD,GAAA,YAAAgB,GAAY,SAACtxD,EAAO77B,EAAO,CACzBA,EAAM,gBAAe,EACrB+6B,EAAA,KAAK6xD,IAAU,SAAS,+BAAgC,CACtD,OAAQ,KACR,KAAM7xD,EAAA,KAAK4a,IACX,MAAO9Z,CACb,CAAK,CACF,EAiDDkiD,GAAA,YAAAM,GAAQ,SAACr+E,EAAO,CACdisF,GAAY,iBAAiB,KAAK,KAAMjsF,CAAK,CAC9C,EACDosF,GAAA,YAAAW,GAAa,SAAC/sF,EAAO,CACnB,GAAI+6B,EAAA,KAAKsxD,GAAAe,IAAoB,CAC3B,KAAK,aAAY,EACjB,MACD,CAQD,GAPAnyD,EAAA,KAAKyxD,GAA2B1sF,EAAM,SAAW,GAC5C+6B,EAAA,KAAK8xD,MACR5xD,EAAA,KAAK4xD,GAAkB,IAAI,iBAC3B,OAAO,iBAAiB,cAAe11D,EAAA,KAAKmH,GAAAC,IAAa,KAAK,IAAI,EAAG,CACnE,OAAQxD,EAAA,KAAKsE,IAAW,eAAetE,EAAA,KAAK8xD,GAAe,CACnE,CAAO,GAEC9xD,EAAA,KAAK0xD,IAAW,CAClB1xD,EAAA,KAAK0xD,IAAU,UAAU,OAAO,QAAQ,EACxC,MACD,CACD,MAAMhgF,EAAOwuB,EAAA,KAAKwxD,GAAYt1D,EAAA,KAAK+0D,GAAAgB,IAAL,YAC9BnyD,EAAA,KAAKuxD,IAAQ,OAAO7/E,CAAI,CACzB,EACD6xB,GAAA,YAAAC,GAAY,SAACv+B,EAAO,QACdk1B,EAAA6F,EAAA,KAAK0xD,MAAL,MAAAv3D,EAAgB,SAASl1B,EAAM,SAGnC,KAAK,aAAY,CAClB,EAMGqsF,GAAA,YAAAe,GAAkB,UAAG,CACvB,OAAOryD,EAAA,KAAK0xD,KAAa,CAAC1xD,EAAA,KAAK0xD,IAAU,UAAU,SAAS,QAAQ,CACrE,EAjLD30D,EAZIm0D,GAYGa,GAAa,MAZtB,IAAM98D,GAANi8D,6JAyOA,MAAMoB,GAAN,MAAMA,WAAwB/xC,EAAiB,CAuC7C,YAAYl1C,EAAQ,CAClB,MAAM,CACJ,GAAGA,EACH,KAAM,iBACZ,CAAK,EA2CH0xB,EAAA,KAAAw1D,IAWAx1D,EAAA,KAAAy1D,IAkHAz1D,EAAA,KAAA0rD,IA4BA1rD,EAAA,KAAA01D,IA4FA11D,EAAA,KAAA21D,IAWA31D,EAAA,KAAA41D,IASA51D,EAAA,KAAA61D,IAoHA71D,EAAA,KAAA81D,IAgBA91D,EAAA,KAAA+1D,IAuDA/1D,EAAA,KAAAg2D,IAGAh2D,EAAA,KAAAi2D,IAyBAj2D,EAAA,KAAAk2D,IAqPAl2D,EAAA,KAAA+rD,IA1yBA/rD,EAAA,KAAAm2D,GAAc,MACdn2D,EAAA,KAAAo2D,GAAgB,GAChBp2D,EAAA,KAAAq2D,GAAA,QACAr2D,EAAA,KAAAs2D,GAAc,MACdt2D,EAAA,KAAAgG,GAAe,MACfhG,EAAA,KAAAu2D,GAAiB,MACjBv2D,EAAA,KAAAw2D,GAAa,MACbx2D,EAAA,KAAAy2D,GAAe,GACfz2D,EAAA,KAAA02D,GAAgB,MAChB12D,EAAA,KAAA22D,GAAqB,MACrB32D,EAAA,KAAA0I,GAAM,MACN1I,EAAA,KAAA42D,GAAmB,IACnB52D,EAAA,KAAAsyD,GAAa,MACbtyD,EAAA,KAAA62D,GAAA,QACA72D,EAAA,KAAA82D,GAAa,MACb92D,EAAA,KAAA+2D,GAAQ,IACR/2D,EAAA,KAAA2vD,GAAA,QACA3vD,EAAA,KAAAg3D,GAAoB,IA0BlB,KAAK,MAAQ1oF,EAAO,OAASinF,GAAgB,cAC7CpyD,EAAA,KAAKwsD,GAAarhF,EAAO,WAAainF,GAAgB,mBACtDpyD,EAAA,KAAK0zD,GAAWvoF,EAAO,SAAWinF,GAAgB,iBAClDpyD,EAAA,KAAKkzD,GAAS/nF,EAAO,OAAS,MAC9B60B,EAAA,KAAK6zD,GAAoB1oF,EAAO,kBAAoB,IACpD60B,EAAA,KAAK4zD,GAAQzoF,EAAO,MAAQ,IAC5B,KAAK,aAAe,GACpB,KAAK,cAAgB,gCACjBA,EAAO,YAAc,IACvB60B,EAAA,KAAKyzD,GAAmB,IACxBv3D,EAAA,KAAKo2D,GAAAwB,IAAL,UAAyB3oF,GACzB+wB,EAAA,KAAKw2D,GAAAqB,IAAL,YACSj0D,EAAA,KAAKozD,MACdlzD,EAAA,KAAKgzD,GAAc7nF,EAAO,YAC1B60B,EAAA,KAAKizD,GAAgB9nF,EAAO,cAC5B60B,EAAA,KAAKqzD,GAAaloF,EAAO,WACzB60B,EAAA,KAAKszD,GAAenoF,EAAO,aAC3B+wB,EAAA,KAAKm2D,GAAA2B,IAAL,WACA93D,EAAA,KAAKw2D,GAAAqB,IAAL,WACA,KAAK,OAAO,KAAK,QAAQ,EAE5B,CAtCD,WAAW,kBAAmB,CAC5B,MAAM1mD,EAAQ+kD,GAAgB,UAC9B,OAAO/6D,GAAO,KAAM,mBAAoB,IAAIkQ,GAAgB,CAAC,CAAC,CAAC,YAAa,eAAe,EAAG8F,EAAM,WAAY,CAC9G,KAAM,CAAC,CAAC,CACd,CAAK,EAAG,CAAC,CAAC,aAAc,gBAAgB,EAAGA,EAAM,WAAY,CACvD,KAAM,CAAC,CAAC,CACd,CAAK,EAAG,CAAC,CAAC,UAAW,aAAa,EAAGA,EAAM,WAAY,CACjD,KAAM,CAAC,CAAC,CACd,CAAK,EAAG,CAAC,CAAC,YAAa,eAAe,EAAGA,EAAM,WAAY,CACrD,KAAM,CAAC,CAAC,CACd,CAAK,CAAC,CAAC,CAAC,CACL,CA4BD,IAAI,sBAAuB,CACzB,MAAO,CACL,OAAQ,QACR,KAAMvN,EAAA,KAAK2zD,IAAmB,iBAAmB,YACjD,MAAO,KAAK,WAAW,oBAAoB,IAAI,KAAK,KAAK,EACzD,UAAW3zD,EAAA,KAAK0sD,IAChB,iBAAkB1sD,EAAA,KAAK+zD,GAC7B,CACG,CACD,IAAI,oBAAqB,CACvB,MAAO,CACL,KAAM,YACN,MAAO,KAAK,WAAW,oBAAoB,IAAI,KAAK,KAAK,CAC/D,CACG,CACD,OAAO,0BAA0B/wF,EAAM,CACrC,MAAO,CACL,eAAgBA,EAAK,IAAI,OAAO,EAAE,IACxC,CACG,CA4FD,OAAO,WAAWgxC,EAAMtP,EAAW,OACjC6b,GAAiB,WAAWvM,EAAMtP,CAAS,EAC3C4tD,GAAgB,gBAAhBA,GAAgB,gBAAkBn4D,EAAAuK,EAAU,kBAAV,YAAAvK,EAA2B,SAAS,OAAO,QAAS,UACvF,CACD,OAAO,oBAAoBvqB,EAAMzB,EAAO,CACtC,OAAQyB,EAAI,CACV,KAAK+kB,GAA2B,wBAC9B29D,GAAgB,cAAgBnkF,EAChC,MACF,KAAKwmB,GAA2B,oBAC9B29D,GAAgB,kBAAoBnkF,EACpC,KACH,CACF,CACD,gBAAgB8iB,EAAGO,EAAG,CAAE,CACxB,IAAI,iBAAkB,CACpB,OAAOwO,EAAA,KAAKqvD,GACb,CACD,aAAaz/E,EAAMzB,EAAO,CACxB,OAAQyB,EAAI,CACV,KAAK+kB,GAA2B,gBAC9ByH,EAAA,KAAKqsD,GAAAU,IAAL,UAAkBh7E,GAClB,MACF,KAAKwmB,GAA2B,oBAC9ByH,EAAA,KAAKq2D,GAAA0B,IAAL,UAAsBhmF,GACtB,KACH,CACF,CACD,WAAW,2BAA4B,CACrC,MAAO,CAAC,CAACwmB,GAA2B,wBAAyB29D,GAAgB,aAAa,EAAG,CAAC39D,GAA2B,oBAAqB29D,GAAgB,iBAAiB,CAAC,CACjL,CACD,IAAI,oBAAqB,CACvB,MAAO,CAAC,CAAC39D,GAA2B,gBAAiB,KAAK,OAAS29D,GAAgB,aAAa,EAAG,CAAC39D,GAA2B,oBAAqBqL,EAAA,KAAK0sD,KAAc4F,GAAgB,iBAAiB,EAAG,CAAC39D,GAA2B,eAAgBqL,EAAA,KAAK2zD,GAAgB,CAAC,CAC9Q,CAiDD,MAAM,gBAAiB,CACrB,MAAMS,EAAU,MAAM,MAAM,iBAC5B,OAAKA,GAGD,KAAK,WAAW,kBAClBl0D,EAAA,KAAK6C,GAAe,IAAI9N,GAAY,CAClC,OAAQ,IAChB,CAAO,GACDm/D,EAAQ,eAAep0D,EAAA,KAAK+C,GAAY,GAEnCqxD,GARE,IASV,CACD,gBAAiB,CACf,MAAM,eAAc,EACpB,KAAK,IAAI,UAAU,OAAO,WAAY,EAAI,CAC3C,CACD,eAAgB,CACd,MAAM,cAAa,EACnB,KAAK,IAAI,UAAU,OAAO,WAAY,EAAK,CAC5C,CACD,mBAAoB,CAClB,OAAO,MAAM,kBAAkBh4D,EAAA,KAAK22D,GAAAsB,IAAL,UAAmB,CACnD,CACD,oBAAqB,CACnB,MAAO,CAAC,EAAG,CAAC,CACb,CACD,QAAQliD,EAAIC,EAAI,CACd,OAAO,MAAM,QAAQD,EAAIC,EAAIhW,EAAA,KAAK22D,GAAAsB,IAAL,UAAmB,CACjD,CACD,UAAUj4C,EAAO,CACV,KAAK,qBACR,KAAK,OAAO,kBAAkB,IAAI,EAEhCA,GACF,KAAK,IAAI,OAEZ,CACD,QAAS,CACPhgB,EAAA,KAAKu2D,GAAA2B,IAAL,WACA,KAAK,iBAAiB,CACpB,OAAQ,SACd,CAAK,EACD,MAAM,OAAM,CACb,CACD,SAAU,CACH,KAAK,SAGV,MAAM,QAAO,EACT,KAAK,MAAQ,OAGjBl4D,EAAA,KAAKw2D,GAAAqB,IAAL,WACK,KAAK,iBACR,KAAK,OAAO,IAAI,IAAI,GAEvB,CACD,UAAUnvD,EAAQ,OAChB,IAAIyvD,EAAiB,GACjB,KAAK,QAAU,CAACzvD,EAClB1I,EAAA,KAAKu2D,GAAA2B,IAAL,WACSxvD,IACT1I,EAAA,KAAKw2D,GAAAqB,IAAL,UAAqBnvD,GACrByvD,EAAiB,CAAC,KAAK,UAAUp6D,EAAA,KAAK,MAAL,YAAAA,EAAU,UAAU,SAAS,oBAEhE,MAAM,UAAU2K,CAAM,EACtB,KAAK,KAAK,KAAK,UAAU,EACrByvD,GACF,KAAK,OAAM,CAEd,CAoED,OAAO/2C,EAAO,WACZ,KAAM,CACJ,UAAAg3C,CACN,EAAQ,KAAK,OACT,IAAIlvD,EACAtF,EAAA,KAAK2zD,KACPn2C,GAASA,EAAQ,KAAK,SAAW,KAAO,IACxClY,EAAMlJ,EAAAjC,EAAAm4D,GAAgBmC,GAAAC,IAAhB,KAAAv6D,EAA4B6F,EAAA,KAAK0zD,IAAmB,IAAKl2C,IAE/DlY,EAAMlJ,EAAAlC,EAAAo4D,GAAgBmC,GAAAC,IAAhB,KAAAx6D,EAA4B,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,MAAM,EAAGsjB,GAE/Eg3C,EAAU,iBAAiBx0D,EAAA,KAAKyF,IAAK,CACnC,KAAMH,EACN,KAAM,CACJ,qBAAsBkY,CACvB,CACP,CAAK,EACDg3C,EAAU,iBAAiBx0D,EAAA,KAAK6zD,IAAY,CAC1C,KAAMz3D,EAAA2R,EAAAukD,GAAgBmC,GAAAC,IAAhB,KAAA3mD,EAA4B/N,EAAA,KAAKszD,IAAe,IAAK91C,GAC3D,KAAM,CACJ,qBAAsBA,CACvB,CACP,CAAK,CACF,CACD,QAAS,CACP,GAAI,KAAK,IACP,OAAO,KAAK,IAEd,MAAMlc,EAAM,MAAM,SACdtB,EAAA,KAAK8zD,MACPxyD,EAAI,aAAa,aAActB,EAAA,KAAK8zD,GAAK,EACzCxyD,EAAI,aAAa,OAAQ,MAAM,GAE7BtB,EAAA,KAAK2zD,IACPryD,EAAI,UAAU,IAAI,MAAM,EAExB,KAAK,IAAI,iBAAiB,UAAWlF,EAAA,KAAKy2D,GAAA8B,IAAS,KAAK,IAAI,EAAG,CAC7D,OAAQ,KAAK,WAAW,OAChC,CAAO,EAEH,MAAMC,EAAe10D,EAAA,KAAKuzD,GAAgB,SAAS,cAAc,KAAK,GACtEnyD,EAAI,OAAOszD,CAAY,EACvBA,EAAa,aAAa,cAAe,MAAM,EAC/CA,EAAa,UAAY,WACzBA,EAAa,MAAM,SAAW50D,EAAA,KAAKqzD,IACnC,KAAM,CAAChhD,EAAaC,CAAY,EAAI,KAAK,iBACzC,YAAK,QAAQ,KAAK,MAAQD,EAAa,KAAK,OAASC,CAAY,EACjE/M,GAAW,KAAMvF,EAAA,KAAKyzD,IAAe,CAAC,cAAe,cAAc,CAAC,EACpE,KAAK,cAAa,EACXnyD,CACR,CACD,aAAc,OACP,KAAK,aACRnH,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB6F,EAAA,KAAK6zD,IAAY,CACvD,UAAW,CACT,QAAS,EACV,CACT,EAEG,CACD,cAAe,OACR,KAAK,aACR15D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB6F,EAAA,KAAK6zD,IAAY,CACvD,UAAW,CACT,QAAS,EACV,CACT,EAEG,CAID,WAAWgB,EAAW,CAEpB,OADA,KAAK,OAAO,SAAS,IAAI,EACjBA,EAAS,CACf,IAAK,GACL,IAAK,GACHz4D,EAAA,KAAK02D,GAAAgC,IAAL,UAAe,IACf,MACF,IAAK,GACL,IAAK,GACH14D,EAAA,KAAK02D,GAAAgC,IAAL,UAAe,IACf,KACH,CACF,CAYD,QAAS,OACP,MAAM,OAAM,EACP90D,EAAA,KAAK6zD,OAGV15D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB6F,EAAA,KAAK6zD,IAAY,CACvD,UAAW,CACT,QAAS,GACT,SAAU,EACX,CACP,GACG,CACD,UAAW,OACT,MAAM,SAAQ,EACT7zD,EAAA,KAAK6zD,OAGV15D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB6F,EAAA,KAAK6zD,IAAY,CACvD,UAAW,CACT,SAAU,EACX,CACP,GACS7zD,EAAA,KAAK2zD,KACRv3D,EAAA,KAAK02D,GAAAgC,IAAL,UAAe,IAElB,CACD,IAAI,kBAAmB,CACrB,MAAO,CAAC90D,EAAA,KAAK2zD,GACd,CACD,KAAKtsF,EAAU,KAAK,WAAY,CAC9B,MAAM,KAAKA,CAAO,EACd,KAAK,SACP,KAAK,OAAO,UAAU,iBAAiB24B,EAAA,KAAKyF,IAAK,CAC/C,UAAW,CACT,OAAQ,CAACp+B,CACV,CACT,CAAO,EACD,KAAK,OAAO,UAAU,iBAAiB24B,EAAA,KAAK6zD,IAAY,CACtD,UAAW,CACT,OAAQ,CAACxsF,CACV,CACT,CAAO,EAEJ,CAgCD,OAAO,kBAAkBy9B,EAAQE,EAAO,CACtC,OAAQkK,EACR,EAAAje,EACA,EAAAO,CACJ,EAAK,CACD,KAAM,CACJ,EAAGid,EACH,EAAGC,EACH,MAAO2D,EACP,OAAQC,CACd,EAAQpD,EAAU,wBACRb,EAAK,IAAI,gBACT/K,EAASwB,EAAO,eAAeuJ,CAAE,EACjC0P,EAAoBl1C,GAAK,CAC7BwlC,EAAG,MAAK,EACRjS,EAAA,KAAK24D,GAAAC,IAAL,UAAmBlwD,EAAQj8B,EACjC,EACI,OAAO,iBAAiB,OAAQk1C,EAAmB,CACjD,OAAAza,CACN,CAAK,EACD,OAAO,iBAAiB,YAAaya,EAAmB,CACtD,OAAAza,CACN,CAAK,EACD,OAAO,iBAAiB,cAAe9L,GAAW,CAChD,QAAS,GACT,QAAS,GACT,OAAA8L,CACN,CAAK,EACD,OAAO,iBAAiB,cAAelM,GAAe,CACpD,OAAAkM,CACN,CAAK,EACD4L,EAAU,iBAAiB,cAAe9S,EAAA,KAAK64D,GAAAC,IAAe,KAAK,KAAMpwD,CAAM,EAAG,CAChF,OAAAxB,CACN,CAAK,EACD,KAAK,eAAiB,IAAI0tD,GAAsB,CAC9C,EAAA//D,EACA,EAAAO,CACD,EAAE,CAACid,EAAQC,EAAQ2D,EAAaC,CAAY,EAAGxN,EAAO,MAAO,KAAK,kBAAoB,EAAGE,EAAO,IAAK,EACrG,CACC,GAAI,KAAK,iBACT,WAAY,KAAK,oBACvB,EAAQF,EAAO,UAAU,KAAK,CACxB,KAAM,CAAC,EAAG,EAAG,EAAG,CAAC,EACjB,KAAM,CACJ,QAAS,UACT,KAAM,KAAK,cACX,eAAgB,KAAK,eACtB,EACD,UAAW,CACT,UAAW,GACX,KAAM,EACP,EACD,KAAM,CACJ,EAAG,KAAK,eAAe,UAAW,CACnC,CACP,EAAO,GAAM,EAAI,CACd,CAyBD,aAAa,YAAY9hC,EAAM8hC,EAAQJ,EAAW,aAChD,IAAIghC,EAAc,KAClB,GAAI1iE,aAAgBy3E,GAA4B,CAC9C,KAAM,CACJ,KAAM,CACJ,WAAAmC,EACA,KAAAvhD,EACA,SAAA+C,EACA,GAAArpB,EACA,MAAA+rB,EACA,QAAAq0D,GACA,SAAA7O,EACD,EACD,OAAQ,CACN,KAAM,CACJ,WAAA93C,EACD,CACF,CACF,EAAGxrC,EACJ0iE,EAAc1iE,EAAO,CACnB,eAAgB4xB,GAAqB,UACrC,MAAO,MAAM,KAAKkM,CAAK,EACvB,QAAAq0D,GACA,WAAAvY,EACA,MAAO,KACP,UAAWpuC,GAAa,EACxB,KAAMnT,EAAK,MAAM,CAAC,EAClB,SAAA+C,EACA,GAAArpB,EACA,QAAS,GACT,SAAAuxE,EACR,CACA,SAAetjF,aAAgBu3E,GAAsB,CAC/C,KAAM,CACJ,KAAM,CACJ,SAAAoM,EACA,KAAAtrD,EACA,SAAA+C,EACA,GAAArpB,EACA,MAAA+rB,EACA,YAAa,CACX,SAAU+lD,EACX,EACD,SAAAP,EACD,EACD,OAAQ,CACN,KAAM,CACJ,WAAA93C,EACD,CACF,CACF,EAAGxrC,EACJ0iE,EAAc1iE,EAAO,CACnB,eAAgB4xB,GAAqB,UACrC,MAAO,MAAM,KAAKkM,CAAK,EACvB,UAAA+lD,GACA,SAAAF,EACA,MAAO,KACP,UAAWn4C,GAAa,EACxB,KAAMnT,EAAK,MAAM,CAAC,EAClB,SAAA+C,EACA,GAAArpB,EACA,QAAS,GACT,SAAAuxE,EACR,CACK,CACD,KAAM,CACJ,MAAAxlD,EACA,WAAA87C,EACA,SAAA+J,EACA,QAAAwO,CACD,EAAGnyF,EACEw/B,EAAS,MAAM,MAAM,YAAYx/B,EAAM8hC,EAAQJ,CAAS,EAC9DlC,EAAO,MAAQxpB,GAAK,aAAa,GAAG8nB,CAAK,EACzCZ,EAAAsC,EAAOoxD,GAAWuB,GAAW,GACzBxO,GACFzmD,EAAAsC,EAAOkqD,GAAa1pF,EAAK,WAE3Bw/B,EAAO,oBAAsBx/B,EAAK,IAAM,KACxCw/B,EAAO,aAAekjC,EACtB,KAAM,CAAChkC,EAAWC,CAAU,EAAIa,EAAO,eACjC,CAAC+X,EAAOC,CAAK,EAAIhY,EAAO,gBAC9B,GAAIo6C,EAAY,CACd,MAAM73C,EAAQ7E,EAAAsC,EAAO4wD,GAAS,IAC9B,QAAS1tF,EAAI,EAAGA,EAAIk3E,EAAW,OAAQl3E,GAAK,EAC1Cq/B,EAAM,KAAK,CACT,GAAI63C,EAAWl3E,CAAC,EAAI60C,GAAS7Y,EAC7B,EAAG,GAAKk7C,EAAWl3E,EAAI,CAAC,EAAI80C,GAAS7Y,EACrC,OAAQi7C,EAAWl3E,EAAI,CAAC,EAAIk3E,EAAWl3E,CAAC,GAAKg8B,EAC7C,QAASk7C,EAAWl3E,EAAI,CAAC,EAAIk3E,EAAWl3E,EAAI,CAAC,GAAKi8B,CAC5D,CAAS,EAEHvF,EAAAjC,EAAAqI,EAAO+vD,GAAA2B,IAAP,KAAA/5D,GACAiC,EAAAlC,EAAAsI,EAAOowD,GAAAqB,IAAP,KAAA/5D,GACAsI,EAAO,OAAOA,EAAO,QAAQ,CAC9B,SAAUmkD,EAAU,CACnBzmD,EAAAsC,EAAOmxD,GAAmB,IAC1B,MAAMt9B,EAASswB,EAAS,CAAC,EACnB3nC,EAAQ,CACZ,EAAGqX,EAAO,CAAC,EAAI9b,EACf,EAAG5Y,GAAc00B,EAAO,CAAC,EAAI7b,EACrC,EACYm0C,EAAW,IAAIqC,GAAsBhyC,EAAO,CAAC,EAAG,EAAGtd,EAAWC,CAAU,EAAG,EAAG3B,EAAAwC,EAAOkqD,IAAa,EAAG,GAAM,IAAK,EACtH,QAAShnF,GAAI,EAAG05B,GAAKi3B,EAAO,OAAQ3wD,GAAI05B,GAAI15B,IAAK,EAC/Cs5C,EAAM,EAAIqX,EAAO3wD,EAAC,EAAI60C,EACtByE,EAAM,EAAIrd,GAAc00B,EAAO3wD,GAAI,CAAC,EAAI80C,GACxCm0C,EAAS,IAAI3vC,CAAK,EAEpB,KAAM,CACJ,GAAAjqC,EACA,WAAAqgF,CACR,EAAUtwD,EAAO,UAAU,KAAK,CACxB,KAAM,CAAC,EAAG,EAAG,EAAG,CAAC,EACjB,KAAM,CACJ,QAAS,UACT,KAAMtC,EAAO,MACb,eAAgBA,EAAO,eACxB,EACD,UAAW,CACT,UAAW,GACX,KAAM,EACP,EACD,KAAM,CACJ,EAAGmsD,EAAS,UAAW,CACxB,CACT,EAAS,GAAM,EAAI,EACbvyD,EAAA2R,EAAAvL,EAAOgwD,GAAAwB,IAAP,KAAAjmD,EAA2B,CACzB,kBAAmB4gD,EAAS,YAAa,EACzC,YAAa55E,EACb,WAAAqgF,CACR,GACMh5D,EAAA4R,EAAAxL,EAAOowD,GAAAqB,IAAP,KAAAjmD,EACD,CACD,OAAOxL,CACR,CACD,UAAUgS,EAAe,GAAO,CAC9B,GAAI,KAAK,QAAS,GAAIA,EACpB,OAAO,KAET,GAAI,KAAK,QACP,OAAO,KAAK,mBAEd,MAAMnZ,EAAO,KAAK,QAAQ,EAAG,CAAC,EACxByF,EAAQyf,GAAiB,cAAc,QAAQ,KAAK,KAAK,EACzDzQ,EAAa,CACjB,eAAgBlb,GAAqB,UACrC,MAAAkM,EACA,QAASd,EAAA,KAAK4zD,IACd,UAAW5zD,EAAA,KAAK0sD,IAChB,WAAYtwD,EAAA,KAAK42D,GAAAqC,IAAL,WACZ,SAAUj5D,EAAA,KAAK62D,GAAAqC,IAAL,UAAwBj6D,GAClC,UAAW,KAAK,UAChB,KAAAA,EACA,SAAUe,EAAA,KAAK22D,GAAAsB,IAAL,WACV,mBAAoB,KAAK,mBAC/B,EACI,OAAI,KAAK,qBAAuB,CAACj4D,EAAA,KAAK0sD,GAAA4B,IAAL,UAAwB56C,GAChD,MAETA,EAAW,GAAK,KAAK,oBACdA,EACR,CAOD,wBAAwB2C,EAAY,CAClC,OAAAA,EAAW,aAAa,CACtB,KAAM,KAAK,QAAQ,EAAG,CAAC,CAC7B,CAAK,EACM,IACR,CACD,OAAO,yBAA0B,CAC/B,MAAO,EACR,CACH,EAzzBEygD,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAtwD,GAAA,YACAuwD,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAjuD,GAAA,YACAkuD,GAAA,YACAtE,GAAA,YACAuE,GAAA,YACAC,GAAA,YACAC,GAAA,YACApH,GAAA,YACAqH,GAAA,YAoEAxB,GAAA,YAAA2B,GAAe,UAAG,CAChB,MAAMvF,EAAW,IAAII,GAAkB/uD,EAAA,KAAKozD,IAAQ,IAAK,EACzDlzD,EAAA,KAAKwzD,GAAqB/E,EAAS,eACnC,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,MAAM,EAAI3uD,EAAA,KAAK0zD,IAAmB,IACpE,MAAM6B,EAAqB,IAAIxG,GAAkB/uD,EAAA,KAAKozD,IAAQ,MAAQ,KAAO,KAAK,WAAW,YAAc,KAAK,EAChHlzD,EAAA,KAAKozD,GAAiBiC,EAAmB,eACzC,KAAM,CACJ,UAAA3F,CACN,EAAQ5vD,EAAA,KAAKszD,IACTpzD,EAAA,KAAKmvD,GAAa,EAAEO,EAAU,CAAC,EAAI,KAAK,GAAK,KAAK,OAAQA,EAAU,CAAC,EAAI,KAAK,GAAK,KAAK,MAAM,EAC/F,EACD4C,GAAA,YAAAwB,GAAmB,SAAC,CAClB,kBAAAwB,EACA,YAAAC,EACA,WAAAL,CACJ,EAAK,SACDl1D,EAAA,KAAKwzD,GAAqB8B,GAC1B,MAAME,EAAiB,IAEvB,GADAx1D,EAAA,KAAKozD,GAAiBkC,EAAkB,cAAcx1D,EAAA,KAAK0sD,IAAa,EAAIgJ,EAAgB,KAAM,GAC9FD,GAAe,EACjBv1D,EAAA,KAAKuF,GAAMgwD,GACXv1D,EAAA,KAAKmzD,GAAc+B,GACnB,KAAK,OAAO,UAAU,aAAaK,EAAa,CAC9C,KAAMD,EAAkB,IACxB,KAAM,CACJ,EAAGA,EAAkB,UAAW,CACjC,CACT,CAAO,EACDt1D,EAAA,KAAK2zD,GAAa,KAAK,OAAO,UAAU,YAAY,CAClD,UAAW,CACT,iBAAkB,GAClB,KAAM,EACP,EACD,KAAM7zD,EAAA,KAAKszD,IAAe,IAC1B,KAAM,CACJ,EAAGtzD,EAAA,KAAKszD,IAAe,UAAW,CACnC,CACF,EAAE,EAAI,WACE,KAAK,OAAQ,CACtB,MAAM91C,EAAQ,KAAK,OAAO,SAAS,SACnC,KAAK,OAAO,UAAU,iBAAiBxd,EAAA,KAAKyF,IAAK,CAC/C,KAAMrJ,EAAAjC,EAAAm4D,GAAgBmC,GAAAC,IAAhB,KAAAv6D,EAA4B6F,EAAA,KAAK0zD,IAAmB,KAAMl2C,EAAQ,KAAK,SAAW,KAAO,KAC/F,KAAM,CACJ,EAAGg4C,EAAkB,UAAW,CACjC,CACT,CAAO,EACD,KAAK,OAAO,UAAU,iBAAiBx1D,EAAA,KAAK6zD,IAAY,CACtD,KAAMz3D,EAAAlC,EAAAo4D,GAAgBmC,GAAAC,IAAhB,KAAAx6D,EAA4B8F,EAAA,KAAKszD,IAAe,IAAK91C,GAC3D,KAAM,CACJ,EAAGxd,EAAA,KAAKszD,IAAe,UAAW,CACnC,CACT,CAAO,CACF,CACD,KAAM,CAACriE,EAAGO,EAAG5pB,EAAOR,CAAM,EAAIouF,EAAkB,IAChD,OAAQ,KAAK,SAAQ,CACnB,IAAK,GACH,KAAK,EAAIvkE,EACT,KAAK,EAAIO,EACT,KAAK,MAAQ5pB,EACb,KAAK,OAASR,EACd,MACF,IAAK,IACH,CACE,KAAM,CAACs6B,EAAWC,CAAU,EAAI,KAAK,iBACrC,KAAK,EAAInQ,EACT,KAAK,EAAI,EAAIP,EACb,KAAK,MAAQrpB,EAAQ+5B,EAAaD,EAClC,KAAK,OAASt6B,EAASs6B,EAAYC,EACnC,KACD,CACH,IAAK,KACH,KAAK,EAAI,EAAI1Q,EACb,KAAK,EAAI,EAAIO,EACb,KAAK,MAAQ5pB,EACb,KAAK,OAASR,EACd,MACF,IAAK,KACH,CACE,KAAM,CAACs6B,EAAWC,CAAU,EAAI,KAAK,iBACrC,KAAK,EAAI,EAAInQ,EACb,KAAK,EAAIP,EACT,KAAK,MAAQrpB,EAAQ+5B,EAAaD,EAClC,KAAK,OAASt6B,EAASs6B,EAAYC,EACnC,KACD,CACJ,CACD,KAAM,CACJ,UAAAiuD,CACN,EAAQ5vD,EAAA,KAAKszD,IACTpzD,EAAA,KAAKmvD,GAAa,EAAEO,EAAU,CAAC,EAAI3+D,GAAKrpB,GAAQgoF,EAAU,CAAC,EAAIp+D,GAAKpqB,CAAM,EAC3E,EAmCDqhF,GAAA,YAAAU,GAAY,SAACroD,EAAO,CAClB,MAAM60D,EAAqB,CAAC9K,EAAK+K,IAAQ,SACvC,KAAK,MAAQ/K,EACb3qD,EAAA,KAAK0zD,GAAWgC,IAChBz7D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB6F,EAAA,KAAKyF,IAAK,CAChD,KAAM,CACJ,KAAMolD,EACN,eAAgB+K,CACjB,CACT,IACM17D,EAAA8F,EAAA,KAAK+C,MAAL,MAAA7I,EAAmB,YAAY2wD,EACrC,EACUC,EAAa,KAAK,MAClB+K,EAAe71D,EAAA,KAAK4zD,IAC1B,KAAK,YAAY,CACf,IAAK+B,EAAmB,KAAK,KAAM70D,EAAOwxD,GAAgB,eAAe,EACzE,KAAMqD,EAAmB,KAAK,KAAM7K,EAAY+K,CAAY,EAC5D,KAAM,KAAK,WAAW,SAAS,KAAK,KAAK,WAAY,IAAI,EACzD,SAAU,GACV,KAAMlhE,GAA2B,gBACjC,oBAAqB,GACrB,SAAU,EAChB,CAAK,EACD,KAAK,iBAAiB,CACpB,OAAQ,gBACR,MAAO,KAAK,WAAW,oBAAoB,IAAImM,CAAK,CACrD,EAAE,EAAI,CACR,EACD2xD,GAAA,YAAA0B,GAAgB,SAACtN,EAAW,CAC1B,MAAMiP,EAAiB91D,EAAA,KAAK0sD,IACtBqJ,EAAeC,GAAM,CACzB91D,EAAA,KAAKwsD,GAAasJ,GAClB55D,EAAA,KAAKs2D,GAAAuD,IAAL,UAAsBD,EAC5B,EACI,KAAK,YAAY,CACf,IAAKD,EAAa,KAAK,KAAMlP,CAAS,EACtC,KAAMkP,EAAa,KAAK,KAAMD,CAAc,EAC5C,KAAM,KAAK,WAAW,SAAS,KAAK,KAAK,WAAY,IAAI,EACzD,SAAU,GACV,KAAMnhE,GAA2B,cACjC,oBAAqB,GACrB,SAAU,EAChB,CAAK,EACD,KAAK,iBAAiB,CACpB,OAAQ,oBACR,UAAAkyD,CACD,EAAE,EAAI,CACR,EAyED6L,GAAA,YAAAuD,GAAgB,SAACpP,EAAW,CAC1B,GAAI,CAAC7mD,EAAA,KAAK2zD,IACR,OAEFv3D,EAAA,KAAKo2D,GAAAwB,IAAL,UAAyB,CACvB,kBAAmBh0D,EAAA,KAAK0zD,IAAmB,cAAc7M,EAAY,CAAC,CAC5E,GACI,KAAK,kBAAiB,EACtB,KAAM,CAACx0C,EAAaC,CAAY,EAAI,KAAK,iBACzC,KAAK,QAAQ,KAAK,MAAQD,EAAa,KAAK,OAASC,CAAY,CAClE,EACDqgD,GAAA,YAAA2B,GAAe,UAAG,CACZt0D,EAAA,KAAKyF,MAAQ,MAAQ,CAAC,KAAK,SAG/B,KAAK,OAAO,UAAU,OAAOzF,EAAA,KAAKyF,GAAG,EACrCvF,EAAA,KAAKuF,GAAM,MACX,KAAK,OAAO,UAAU,OAAOzF,EAAA,KAAK6zD,GAAU,EAC5C3zD,EAAA,KAAK2zD,GAAa,MACnB,EACDjB,GAAA,YAAAqB,GAAe,SAACnvD,EAAS,KAAK,OAAQ,CAChC9E,EAAA,KAAKyF,MAAQ,OAGhB,CACC,GAAIC,GAAA,KAAAD,IAAA,EACJ,WAAYC,GAAA,KAAA2tD,IAAA,CAClB,EAAQvuD,EAAO,UAAU,KAAK,CACxB,KAAM9E,EAAA,KAAK0zD,IAAmB,IAC9B,KAAM,CACJ,QAAS,UACT,KAAM,KAAK,MACX,eAAgB1zD,EAAA,KAAK4zD,GACtB,EACD,UAAW,CACT,UAAW,GACX,KAAM5zD,EAAA,KAAK2zD,GACZ,EACD,KAAM,CACJ,EAAG3zD,EAAA,KAAK0zD,IAAmB,UAAW,CACvC,CACP,EAAO,GAAO,EAAI,EACdxzD,EAAA,KAAK2zD,GAAa/uD,EAAO,UAAU,YAAY,CAC7C,UAAW,CACT,iBAAkB,GAClB,KAAM9E,EAAA,KAAK2zD,GACZ,EACD,KAAM3zD,EAAA,KAAKszD,IAAe,IAC1B,KAAM,CACJ,EAAGtzD,EAAA,KAAKszD,IAAe,UAAW,CACnC,CACP,EAAOtzD,EAAA,KAAK2zD,GAAgB,GACpB3zD,EAAA,KAAKyzD,MACPzzD,EAAA,KAAKyzD,IAAc,MAAM,SAAWzzD,EAAA,KAAKqzD,KAE5C,EACMoB,GAAA,YAAAC,GAAW,SAAC,CAACzjE,EAAGO,EAAG5pB,EAAOR,CAAM,EAAGo2C,EAAO,CAC/C,OAAQA,EAAK,CACX,IAAK,IACH,MAAO,CAAC,EAAIhsB,EAAIpqB,EAAQ6pB,EAAG7pB,EAAQQ,CAAK,EAC1C,IAAK,KACH,MAAO,CAAC,EAAIqpB,EAAIrpB,EAAO,EAAI4pB,EAAIpqB,EAAQQ,EAAOR,CAAM,EACtD,IAAK,KACH,MAAO,CAACoqB,EAAG,EAAIP,EAAIrpB,EAAOR,EAAQQ,CAAK,CAC1C,CACD,MAAO,CAACqpB,EAAGO,EAAG5pB,EAAOR,CAAM,CAC5B,EAsEDyrF,GAAA,YAAA8B,GAAQ,SAAC1vF,EAAO,CACdqtF,GAAgB,iBAAiB,KAAK,KAAMrtF,CAAK,CAClD,EAcD6tF,GAAA,YAAAgC,GAAS,SAACj1D,EAAO,CACf,GAAI,CAACG,EAAA,KAAKkzD,IACR,OAEF,MAAMrkD,EAAY,OAAO,eACrBhP,EACFgP,EAAU,YAAY7O,EAAA,KAAKkzD,IAAalzD,EAAA,KAAKmzD,GAAa,EAE1DtkD,EAAU,YAAY7O,EAAA,KAAKuzD,IAAYvzD,EAAA,KAAKwzD,GAAY,CAE3D,EA6CDT,GAAA,YAAAsB,GAAY,UAAG,CACb,OAAOr0D,EAAA,KAAK2zD,IAAmB,KAAK,SAAW,CAChD,EACDX,GAAA,YAAAqC,GAAe,UAAG,CAChB,GAAIr1D,EAAA,KAAK2zD,IACP,OAAO,KAET,KAAM,CAACjyD,EAAWC,CAAU,EAAI,KAAK,eAC/B,CAAC4Y,EAAOC,CAAK,EAAI,KAAK,gBACtBzV,EAAQ/E,EAAA,KAAKozD,IACbxW,EAAa,IAAI,aAAa73C,EAAM,OAAS,CAAC,EACpD,IAAIr/B,EAAI,EACR,SAAW,CACT,EAAAurB,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,CACD,IAAI29B,EAAO,CACV,MAAM5J,EAAKlK,EAAIyQ,EAAY6Y,EACrBnf,GAAM,EAAI5J,GAAKmQ,EAAa6Y,EAClCoiC,EAAWl3E,CAAC,EAAIk3E,EAAWl3E,EAAI,CAAC,EAAIy1B,EACpCyhD,EAAWl3E,EAAI,CAAC,EAAIk3E,EAAWl3E,EAAI,CAAC,EAAI01B,EACxCwhD,EAAWl3E,EAAI,CAAC,EAAIk3E,EAAWl3E,EAAI,CAAC,EAAIy1B,EAAKvzB,EAAQ85B,EACrDk7C,EAAWl3E,EAAI,CAAC,EAAIk3E,EAAWl3E,EAAI,CAAC,EAAI01B,EAAKh0B,EAASu6B,EACtDj8B,GAAK,CACN,CACD,OAAOk3E,CACR,EACDqW,GAAA,YAAAqC,GAAkB,SAACj6D,EAAM,CACvB,OAAO2E,EAAA,KAAK0zD,IAAmB,UAAUr4D,EAAMe,EAAA,KAAK22D,GAAAsB,IAAL,UAAmB,CACnE,EA0DMY,GAAA,YAAAC,GAAc,SAACpwD,EAAQ7/B,EAAO,CAC/B,KAAK,eAAe,IAAIA,CAAK,GAC/B6/B,EAAO,UAAU,iBAAiB,KAAK,iBAAkB,CACvD,KAAM,CACJ,EAAG,KAAK,eAAe,UAAW,CACnC,CACT,CAAO,CAEJ,EACMiwD,GAAA,YAAAC,GAAa,SAAClwD,EAAQ7/B,EAAO,CAC7B,KAAK,eAAe,UAQvB6/B,EAAO,UAAU,OAAO,KAAK,gBAAgB,EAP7CA,EAAO,sBAAsB7/B,EAAO,GAAO,CACzC,YAAa,KAAK,iBAClB,kBAAmB,KAAK,eAAe,YAAa,EACpD,WAAY,KAAK,qBACjB,iBAAkB,cAC1B,CAAO,EAIH,KAAK,iBAAmB,GACxB,KAAK,eAAiB,KACtB,KAAK,qBAAuB,EAC7B,EAkKD6jF,GAAA,YAAA4B,GAAkB,SAAC56C,EAAY,CAC7B,KAAM,CACJ,MAAAhP,CACN,EAAQ,KAAK,aACT,OAAOgP,EAAW,MAAM,KAAK,CAAC98B,EAAGtN,IAAMsN,IAAM8tB,EAAMp7B,CAAC,CAAC,CACtD,EA7aDq3B,EAnYIu1D,GAmYGmC,IA+OP13D,EAlnBIu1D,GAknBG2C,IASPl4D,EA3nBIu1D,GA2nBGyC,IAxmBPxtF,GAnBI+qF,GAmBG,gBAAgB,MACvB/qF,GApBI+qF,GAoBG,kBAAkB,GACzB/qF,GArBI+qF,GAqBG,oBAAoB,IAC3B/qF,GAtBI+qF,GAsBG,QAAQ,aACf/qF,GAvBI+qF,GAuBG,cAAc19D,GAAqB,WAC1CrtB,GAxBI+qF,GAwBG,mBAAmB,IAC1B/qF,GAzBI+qF,GAyBG,iBAAiB,MACxB/qF,GA1BI+qF,GA0BG,uBAAuB,IA1BhC,IAAM4D,GAAN5D,UAg0BA,MAAM6D,EAAe,CAArB,cACEp5D,EAAA,KAAAq5D,GAAiB,OAAO,OAAO,IAAI,GACnC,eAAelkF,EAAM/D,EAAO,CAC1B,KAAK+D,CAAI,EAAI/D,EACb,KAAK,kBAAkB+D,EAAM/D,CAAK,CACnC,CACD,iBAAiBgqD,EAAY,CAC3B,GAAKA,EAGL,SAAW,CAACjmD,EAAM/D,CAAK,IAAK,OAAO,QAAQgqD,CAAU,EAC9CjmD,EAAK,WAAW,GAAG,GACtB,KAAK,eAAeA,EAAM/D,CAAK,CAGpC,CACD,kBAAkB+D,EAAM/D,EAAO,CAC7B6xB,EAAA,KAAKo2D,IAAelkF,CAAI,EAAI/D,CAC7B,CACD,iBAAkB,CAChB,MAAMuD,EAAOsuB,EAAA,KAAKo2D,IAClB,OAAAl2D,EAAA,KAAKk2D,GAAiB,OAAO,OAAO,IAAI,GACjC,CACL,KAAA1kF,CACN,CACG,CACD,OAAQ,CACNwuB,EAAA,KAAKk2D,GAAiB,OAAO,OAAO,IAAI,EACzC,CACD,UAAU7gF,EAAU,KAAM,CACxB,KAAK,iBAAiBA,CAAO,CAC9B,CACD,OAAQ,CACN+iB,GAAY,iBAAiB,CAC9B,CACH,CAlCE89D,GAAA,2FAmCF,MAAMC,GAAN,MAAMA,WAAsB91C,EAAiB,CAc3C,YAAYl1C,EAAQ,CAClB,MAAMA,CAAM,EAUd0xB,EAAA,KAAAu5D,IAeAv5D,EAAA,KAAAw5D,IAwLAx5D,EAAA,KAAA41D,IAQA51D,EAAA,KAAA61D,IAWA71D,EAAA,KAAAy5D,IAgBAz5D,EAAA,KAAA05D,IAoBA15D,EAAA,KAAA25D,IASA35D,EAAA,KAAA45D,IA/RA55D,EAAA,KAAA65D,GAAgB,MAChB75D,EAAA,KAAA85D,GAAA,QACAtvF,GAAA,eAAU,MAaR24B,EAAA,KAAK22D,GAAmBxrF,EAAO,iBAAmB,IAClD,KAAK,aAAaA,CAAM,CACzB,CACD,aAAaA,EAAQ,CACfA,EAAO,eACT+wB,EAAA,KAAKk6D,GAAAQ,IAAL,UAAyBzrF,GACzB+wB,EAAA,KAAKw2D,GAAAqB,IAAL,WAEH,CAsBD,OAAO,oBAAoBr5D,EAAIC,EAAI,CACjC,MAAMk8D,EAAS,IAAI,IAAI,OAAO,KAAKn8D,CAAE,CAAC,EACtC,SAAW,CAAClzB,EAAKyG,CAAK,IAAK,OAAO,QAAQ0sB,CAAE,EACtCk8D,EAAO,IAAIrvF,CAAG,EAChB,OAAO,OAAOkzB,EAAGlzB,CAAG,EAAGyG,CAAK,EAE5BysB,EAAGlzB,CAAG,EAAIyG,EAGd,OAAOysB,CACR,CACD,OAAO,yBAAyBo8D,EAAU,CACxC1+D,GAAY,iBAAiB,CAC9B,CACD,WAAW,UAAW,CACpBA,GAAY,iBAAiB,CAC9B,CACD,WAAW,UAAW,CACpB,MAAO,EACR,CACD,WAAW,yBAA0B,CACnC,MAAO,EACR,CACD,OAAO,oBAAoB1oB,EAAMzB,EAAO,CACtC,MAAM8oF,EAAe,KAAK,SAAS,IAAIrnF,CAAI,EACvCqnF,GACF,KAAK,uBAAuB,eAAeA,EAAc9oF,CAAK,EAE5D,KAAK,iBACP6xB,EAAAq2D,GAAca,IAAa,eAAeD,EAAc9oF,CAAK,EAC7D,KAAK,eAAe,UAAU,iBAAiB,KAAK,eAAgB,KAAK,uBAAuB,gBAAe,CAAE,EAEpH,CACD,aAAayB,EAAMzB,EAAO,CACxB,MAAM8oF,EAAe,KAAK,YAAY,SAAS,IAAIrnF,CAAI,EACnDqnF,GACF,KAAK,gBAAgBrnF,EAAMqnF,EAAc9oF,CAAK,CAEjD,CACD,WAAW,2BAA4B,CACrC,MAAMgqD,EAAa,GACb5iD,EAAU,KAAK,uBACrB,SAAW,CAAC3F,EAAMsC,CAAI,IAAK,KAAK,SAC9BimD,EAAW,KAAK,CAACvoD,EAAM2F,EAAQrD,CAAI,CAAC,CAAC,EAEvC,OAAOimD,CACR,CACD,IAAI,oBAAqB,CACvB,MAAMA,EAAa,GACb,CACJ,gBAAAg/B,CACD,EAAG,KACJ,SAAW,CAACvnF,EAAMsC,CAAI,IAAK,KAAK,YAAY,SAC1CimD,EAAW,KAAK,CAACvoD,EAAMunF,EAAgBjlF,CAAI,CAAC,CAAC,EAE/C,OAAOimD,CACR,CACD,gBAAgBvoD,EAAMsC,EAAM/D,EAAO,CACjC,MAAMoH,EAAU,KAAK,gBACf6hF,EAAa7hF,EAAQrD,CAAI,EACzBmlF,EAASp1C,GAAO,OACpB1sC,EAAQ,eAAerD,EAAM+vC,CAAG,EAChC,MAAM8K,EAAO/sB,EAAA,KAAK42D,IAAc,eAAe1kF,EAAM+vC,CAAG,EACpD8K,GACF3wB,EAAA,KAAKs6D,GAAAY,IAAL,UAAiBvqC,IAEnB5yB,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAAS5kB,EAAQ,gBAAe,EACnF,EACI,KAAK,YAAY,CACf,IAAK8hF,EAAO,KAAK,KAAMlpF,CAAK,EAC5B,KAAMkpF,EAAO,KAAK,KAAMD,CAAU,EAClC,KAAM,KAAK,WAAW,SAAS,KAAK,KAAK,WAAY,IAAI,EACzD,SAAU,GACV,KAAAxnF,EACA,oBAAqB,GACrB,SAAU,EAChB,CAAK,CACF,CACD,aAAc,QACZuqB,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAASk8D,GAAc,oBAAoBr2D,EAAA,KAAK42D,IAAc,6BAA6Bx6D,EAAA,KAAKq6D,GAAAc,IAAL,UAA0B,EAAG,CACnK,KAAMn7D,EAAA,KAAKu6D,GAAAa,IAAL,UACP,GACF,CACD,YAAa,QACXr9D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAASk8D,GAAc,oBAAoBr2D,EAAA,KAAK42D,IAAc,4BAA4Bx6D,EAAA,KAAKq6D,GAAAc,IAAL,UAA0B,EAAG,CAClK,KAAMn7D,EAAA,KAAKu6D,GAAAa,IAAL,UACP,GACF,CACD,eAAeC,EAAIC,EAAI,QACrBv9D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAAS,CACpD,KAAMiC,EAAA,KAAKu6D,GAAAa,IAAL,UACZ,EACG,CACD,eAAgB,QACdr9D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAASk8D,GAAc,oBAAoBr2D,EAAA,KAAK42D,IAAc,+BAA+Bx6D,EAAA,KAAKq6D,GAAAc,IAAL,WAA4B,KAAK,gBAAgB,EAAG,CAC5L,KAAMn7D,EAAA,KAAKu6D,GAAAa,IAAL,UACP,GACF,CACD,kBAAmB,QACjBr9D,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAAS,CACpD,UAAW,CACT,OAAQ,EACT,CACP,EACG,CACD,iBAAkB,QAChBA,EAAA,KAAK,SAAL,MAAAA,EAAa,UAAU,iBAAiB,KAAK,QAAS,CACpD,UAAW,CACT,OAAQ,EACT,CACP,EACG,CACD,QAAS,CACP,MAAM,OAAM,EACZ,KAAK,gBAAe,EACpB,KAAK,eAAc,CACpB,CACD,gBAAiB,CACf,MAAM,eAAc,EACpB,KAAK,IAAI,UAAU,OAAO,WAAY,EAAI,CAC3C,CACD,eAAgB,CACd,MAAM,cAAa,EACnB,KAAK,IAAI,UAAU,OAAO,WAAY,EAAK,CAC5C,CACD,oBAAqB,CACnB,MAAO,CAAC,EAAG,CAAC,CACb,CACD,IAAI,aAAc,CAChB,MAAO,EACR,CACD,UAAUiiB,EAAO,CACV,KAAK,qBACR,KAAK,OAAO,kBAAkB,IAAI,EAEpC,KAAK,aAAe,GAChBpc,EAAA,KAAK62D,MACP32D,EAAA,KAAK22D,GAAmB,IACxB,KAAK,OAAM,EACX,KAAK,OAAO,YAAY,IAAI,EACxBz6C,GAAS,KAAK,YAChB,KAAK,IAAI,QAGd,CACD,QAAS,CACPhgB,EAAA,KAAKu2D,GAAA2B,IAAL,WACA,MAAM,OAAM,CACb,CACD,SAAU,CACH,KAAK,SAGV,MAAM,QAAO,EACT,KAAK,MAAQ,OAGjBl4D,EAAA,KAAKw2D,GAAAqB,IAAL,WACA73D,EAAA,KAAKs6D,GAAAY,IAAL,UAAiBt3D,EAAA,KAAK42D,IAAc,KAC/B,KAAK,iBACR,KAAK,OAAO,IAAI,IAAI,GAEvB,CACD,UAAU9xD,EAAQ,OAChB,IAAIyvD,EAAiB,GACjB,KAAK,QAAU,CAACzvD,GAClB,KAAK,WAAW,oBAAoB,IAAI,EACxC1I,EAAA,KAAKu2D,GAAA2B,IAAL,YACSxvD,IACT,KAAK,WAAW,iBAAiB,IAAI,EACrC1I,EAAA,KAAKw2D,GAAAqB,IAAL,UAAqBnvD,GACrByvD,EAAiB,CAAC,KAAK,UAAUp6D,EAAA,KAAK,MAAL,YAAAA,EAAU,UAAU,SAAS,oBAEhE,MAAM,UAAU2K,CAAM,EAClByvD,GACF,KAAK,OAAM,CAEd,CA8GD,QAAS,CACF,KAAK,QAGV,KAAK,OAAO,UAAU,iBAAiB,KAAK,QAAS8B,GAAc,oBAAoB,CACrF,KAAMj6D,EAAA,KAAKu6D,GAAAa,IAAL,UACP,EAAEx3D,EAAA,KAAK42D,IAAc,gBAAgB,KAAK,eAAiB,KAAK,SAAW,KAAO,GAAG,CAAC,CAAC,CACzF,CACD,iBAAkB,CACX,KAAK,QAGVx6D,EAAA,KAAKs6D,GAAAY,IAAL,UAAiBt3D,EAAA,KAAK42D,IAAc,uBAAuB,KAAK,iBAAkB,KAAK,OAAO,KAAK,EACpG,CACD,OAAO,4BAA6B,CAAE,CACtC,QAAS,CACP,GAAI,KAAK,IACP,OAAO,KAAK,IAEd,IAAI57C,EAAOC,EACP,KAAK,UACPD,EAAQ,KAAK,EACbC,EAAQ,KAAK,GAEf,MAAM3Z,EAAM,MAAM,SAClBA,EAAI,UAAU,IAAI,MAAM,EACxB,MAAMq2D,EAAU,SAAS,cAAc,KAAK,EAC5Cr2D,EAAI,OAAOq2D,CAAO,EAClBA,EAAQ,aAAa,cAAe,MAAM,EAC1CA,EAAQ,UAAY,WACpB,KAAM,CAACtlD,EAAaC,CAAY,EAAI,KAAK,iBACzC,YAAK,QAAQ,KAAK,MAAQD,EAAa,KAAK,OAASC,CAAY,EACjE,KAAK,WAAW,iBAAiB,IAAI,EACrC,KAAK,eAAc,EACf,KAAK,SACP,KAAK,gBAAgB0I,EAAOC,CAAK,EAE5B3Z,CACR,CACD,OAAO,qBAAqBm2D,EAAIC,EAAIE,EAAcC,EAAelsB,EAAW,CAC1ErzC,GAAY,iBAAiB,CAC9B,CACD,OAAO,aAAawM,EAAQJ,EAAWwnD,EAAQjnF,EAAO,OACpD,KAAM,CACJ,OAAAoU,EACA,QAAS4X,EACT,QAASO,EACT,UAAA8uB,EACA,YAAAw3C,CACD,EAAG7yF,EACJ,GAAI+6B,EAAAq2D,GAAc0B,KAAuB/3D,EAAAq2D,GAAc0B,MAAwBD,EAC7E,OAEF,KAAM,CACJ,SAAU,CACR,SAAA15D,CACD,CACF,EAAG0G,EACE,CACJ,MAAOuN,EACP,OAAQC,CACd,EAAQj5B,EAAO,wBACLg1B,EAAKnO,EAAAm2D,GAAc2B,GAAoB,IAAI,iBAC3C10D,EAASwB,EAAO,eAAeuJ,CAAE,EAsDvC,GArDArO,EAAAq2D,GAAc4B,KAAd/3D,EAAAm2D,GAAc4B,GAAsB33C,GACpCtgB,EAAAq2D,GAAc0B,KAAd73D,EAAAm2D,GAAc0B,GAAwBD,GACtC,OAAO,iBAAiB,YAAajvF,GAAK,OACpCm3B,EAAAq2D,GAAc4B,MAAsBpvF,EAAE,UACxC,KAAK,SAASA,CAAC,GAEfsxB,EAAA6F,EAAAq2D,GAAc6B,MAAd,MAAA/9D,EAAkC,OAAOtxB,EAAE,UAEnD,EAAO,CACD,OAAAy6B,CACN,CAAK,EACD,OAAO,iBAAiB,gBAAiBz6B,GAAK,OACxCm3B,EAAAq2D,GAAc4B,MAAsBpvF,EAAE,UACxC,KAAK,eAAe,qBAEpBsxB,EAAA6F,EAAAq2D,GAAc6B,MAAd,MAAA/9D,EAAkC,OAAOtxB,EAAE,UAEnD,EAAO,CACD,OAAAy6B,CACN,CAAK,EACD,OAAO,iBAAiB,cAAez6B,GAAK,CACtCm3B,EAAAq2D,GAAc0B,MAAwBlvF,EAAE,eAG3Cm3B,EAAAq2D,GAAc6B,KAAdh4D,EAAAm2D,GAAc6B,GAAuB,IAAI,MAAO,IAAIrvF,EAAE,SAAS,EAC5Dm3B,EAAAq2D,GAAca,IAAa,kBAC7Bl3D,EAAAq2D,GAAca,IAAa,oBACvBl3D,EAAAq2D,GAAca,IAAa,UAC7B,KAAK,eAAe,kBAAkB,EAAI,EAE1C,KAAK,SAAS,IAAI,GAG5B,EAAO,CACD,QAAS,GACT,QAAS,GACT,OAAA5zD,CACN,CAAK,EACD,OAAO,iBAAiB,cAAelM,GAAe,CACpD,OAAAkM,CACN,CAAK,EACDjqB,EAAO,iBAAiB,cAAe,KAAK,UAAU,KAAK,IAAI,EAAG,CAChE,OAAAiqB,CACN,CAAK,EACDjqB,EAAO,iBAAiB,YAAaxQ,GAAK,CACpCA,EAAE,YAAcm3B,EAAAq2D,GAAc8B,KAChC3gE,GAAU3uB,CAAC,CAEnB,EAAO,CACD,OAAAy6B,CACN,CAAK,EACDwB,EAAO,cAAa,GACpB3K,EAAAuK,EAAU,iBAAV,MAAAvK,EAA0B,OACtB6F,EAAAq2D,GAAca,IAAc,CAC9BpyD,EAAO,UAAU,iBAAiB,KAAK,eAAgB9E,EAAAq2D,GAAca,IAAa,SAASjmE,EAAGO,EAAG6gB,EAAaC,EAAclU,CAAQ,CAAC,EACrI,MACD,CACDsG,EAAU,6BAA6B,IAAI,EAC3CxE,EAAAm2D,GAAca,GAAe,KAAK,qBAAqBjmE,EAAGO,EAAG6gB,EAAaC,EAAclU,CAAQ,GAChG8B,EAAAm2D,GAAc+B,GAAyB,KAAK,4BAC5C,KAAK,eAAiBtzD,EACrB,CACC,GAAI,KAAK,cACf,EAAQA,EAAO,UAAU,KAAK,KAAK,oBAAoB9E,EAAAq2D,GAAc+B,IAAuB,gBAAiB,EAAEp4D,EAAAq2D,GAAca,IAAa,oBAAoB,EAAG,GAAM,EAAK,CACzK,CACD,OAAO,UAAUjyF,EAAO,OAEtB,GADAi7B,EAAAm2D,GAAc8B,GAAwB,IAClC,CAACn4D,EAAAq2D,GAAca,IACjB,OAEF,KAAM,CACJ,QAAA74D,EACA,QAAAC,EACA,UAAAgiB,CACD,EAAGr7C,EACJ,GAAI+6B,EAAAq2D,GAAc4B,MAAsB33C,EAGxC,MAAInmB,EAAA6F,EAAAq2D,GAAc6B,MAAd,YAAA/9D,EAAkC,OAAQ,EAAG,CAC/C,KAAK,SAASl1B,CAAK,EACnB,MACD,CACD,KAAK,eAAe,UAAU,iBAAiB,KAAK,eAAgB+6B,EAAAq2D,GAAca,IAAa,IAAI74D,EAASC,CAAO,CAAC,EACpH4B,EAAAm2D,GAAc8B,GAAwBlzF,EAAM,WAC5CuyB,GAAUvyB,CAAK,EAChB,CACD,OAAO,SAASozF,EAAK,CACfA,IACF,KAAK,eAAiB,GACtB,KAAK,eAAiB,KACtBn4D,EAAAm2D,GAAca,GAAe,MAC7Bh3D,EAAAm2D,GAAc+B,GAAyB,MACvCl4D,EAAAm2D,GAAc0B,GAAsB,MACpC73D,EAAAm2D,GAAc8B,GAAwB,MAEpCn4D,EAAAq2D,GAAc2B,MAChBh4D,EAAAq2D,GAAc2B,IAAkB,QAChC93D,EAAAm2D,GAAc2B,GAAoB,MAClC93D,EAAAm2D,GAAc4B,GAAoB,KAClC/3D,EAAAm2D,GAAc6B,GAAqB,MAEtC,CACD,OAAO,SAASjzF,EAAO,CACrB,MAAM6/B,EAAS,KAAK,eACpB,GAAKA,EAQL,IALAA,EAAO,cAAc,EAAI,EACzB,KAAK,SAAS,EAAK,GACf7/B,GAAA,YAAAA,EAAO,UAAW6/B,EAAO,KAC3BA,EAAO,UAAU,iBAAiB,KAAK,eAAgB9E,EAAAq2D,GAAca,IAAa,IAAIjyF,EAAM,QAASA,EAAM,OAAO,CAAC,EAEjH,KAAK,wBAAyB,CAChC,MAAMqzF,EAAOt4D,EAAAq2D,GAAca,IACrBqB,EAAS,KAAK,eACdC,EAAcF,EAAK,iBACzBxzD,EAAO,YAAY,CACjB,IAAK,IAAM,CACTA,EAAO,UAAU,iBAAiByzD,EAAQD,EAAK,eAAeE,CAAW,CAAC,CAC3E,EACD,KAAM,IAAM,CACV1zD,EAAO,UAAU,iBAAiByzD,EAAQD,EAAK,kBAAiB,CAAE,CACnE,EACD,SAAU,GACV,KAAM3jE,GAA2B,SACzC,CAAO,EACD,MACD,CACD,KAAK,WAAW,EAAK,EACtB,CACD,OAAO,WAAW8jE,EAAW,CAC3B,MAAM3zD,EAAS,KAAK,eACpB,GAAI,CAACA,EACH,OAAO,KAIT,GAFAA,EAAO,cAAc,EAAI,EACzBA,EAAO,eAAenQ,GAA2B,SAAS,EACtD,CAACqL,EAAAq2D,GAAca,IAAa,UAAW,CACzC,KAAM,CACJ,eAAgB,CAACx1D,EAAWC,CAAU,EACtC,MAAAxD,CACD,EAAG2G,EACEtC,EAASsC,EAAO,sBAAsB,CAC1C,QAAS,EACT,QAAS,CACV,EAAE,GAAO,CACR,OAAQ,KAAK,eACb,aAAc9E,EAAAq2D,GAAca,IAAa,YAAYx1D,EAAYvD,EAAOwD,EAAaxD,EAAOA,EAAO,KAAK,aAAa,EACrH,eAAgB6B,EAAAq2D,GAAc+B,IAC9B,gBAAiB,CAACK,CAC1B,CAAO,EACD,YAAK,SAAS,EAAI,EACXj2D,CACR,CACD,OAAAsC,EAAO,UAAU,OAAO,KAAK,cAAc,EAC3C,KAAK,SAAS,EAAI,EACX,IACR,CACD,qBAAqB++B,EAAO,CAAE,CAC9B,OAAO,gBAAgB60B,EAAQC,EAAQntB,EAAYD,EAAaqtB,EAAa/0B,EAAO,CAClFvrC,GAAY,iBAAiB,CAC9B,CACD,aAAa,YAAYt1B,EAAM8hC,EAAQJ,EAAW,SAChD,KAAM,CACJ,QAAS,CACP,UAAAhD,EACA,WAAAC,EACA,MAAA4Y,EACA,MAAAC,CACD,CACP,EAAQ1V,EAAO,SACL+zD,EAAe,KAAK,gBAAgBt+C,EAAOC,EAAO9Y,EAAWC,EAAY,KAAK,cAAe3+B,CAAI,EACjGw/B,EAAS,MAAM,MAAM,YAAYx/B,EAAM8hC,EAAQJ,CAAS,EAC9D,OAAAlC,EAAO,qBAAqBx/B,CAAI,EAChCo5B,EAAAjC,EAAAqI,EAAO8zD,GAAAQ,IAAP,KAAA38D,EAA2B,CACzB,aAAA0+D,CACN,GACIz8D,EAAAlC,EAAAsI,EAAOowD,GAAAqB,IAAP,KAAA/5D,GACAsI,EAAO,gBAAe,EACtBA,EAAO,OAAM,EACNA,CACR,CACD,cAAcgS,EAAc,CAC1B,KAAM,CAAC+F,EAAOC,CAAK,EAAI,KAAK,gBACtB,CAAC9Y,EAAWC,CAAU,EAAI,KAAK,eACrC,OAAO3B,EAAA,KAAK42D,IAAc,UAAU,CAACr8C,EAAOC,EAAO9Y,EAAWC,CAAU,EAAG6S,CAAY,CACxF,CACD,wBAAwB/B,EAAY,CAClC,OAAAA,EAAW,aAAa,CACtB,KAAM,KAAK,QAAQ,EAAG,CAAC,CAC7B,CAAK,EACM,IACR,CACD,OAAO,yBAA0B,CAC/B,MAAO,EACR,CACH,EAhlBEmkD,GAAA,YACAC,GAAA,YAIOK,GAAA,YACAc,GAAA,YACAI,GAAA,YACAH,GAAA,YACAF,GAAA,YACAG,GAAA,YACAC,GAAA,YAaP7B,GAAA,YAAAQ,GAAmB,SAAC,CAClB,aAAA+B,EACA,OAAAN,EACA,eAAAO,CACJ,EAAK,CACD54D,EAAA,KAAK02D,GAAgBiC,GACrB,KAAK,kBAAL,KAAK,gBAAoBC,GACrBP,GAAU,GACZ,KAAK,QAAUA,EACf,KAAK,OAAO,UAAU,aAAaA,EAAQM,EAAa,iBAAiB,GAEzE,KAAK,QAAUz8D,EAAA,KAAKm6D,GAAAwC,IAAL,UAAoBF,EAAc,KAAK,QAExDz8D,EAAA,KAAKs6D,GAAAY,IAAL,UAAiBuB,EAAa,IAC/B,EACDtC,GAAA,YAAAwC,GAAc,SAACF,EAAc/zD,EAAQ,CACnC,KAAM,CACJ,GAAA/vB,CACD,EAAG+vB,EAAO,UAAU,KAAKuxD,GAAc,oBAAoB,KAAK,gBAAgB,gBAAe,EAAIwC,EAAa,oBAAoB,EAAG,GAAO,EAAK,EACpJ,OAAO9jF,CACR,EAmLD49E,GAAA,YAAA2B,GAAe,UAAG,CACZ,KAAK,UAAY,MAAQ,CAAC,KAAK,SAGnC,KAAK,OAAO,UAAU,OAAO,KAAK,OAAO,EACzC,KAAK,QAAU,KACf,KAAK,gBAAgB,QACtB,EACD1B,GAAA,YAAAqB,GAAe,SAACnvD,EAAS,KAAK,OAAQ,CACpC,GAAI,OAAK,UAAY,MAAQ,KAAK,SAAWA,GAG7C,IAAI,KAAK,UAAY,KAAM,CACzB,KAAK,OAAO,UAAU,aAAa,KAAK,QAASA,EAAO,SAAS,EACjE,MACD,CACD,KAAK,gBAAgB,YACrB,KAAK,QAAU1I,EAAA,KAAKm6D,GAAAwC,IAAL,UAAoB/4D,EAAA,KAAK42D,IAAe9xD,GACxD,EACD0xD,GAAA,YAAAwC,GAAqB,SAAC,CAAC/nE,EAAGO,EAAG5pB,EAAOR,CAAM,EAAG,CAC3C,KAAM,CACJ,iBAAkB,CAAC6xF,EAAIC,CAAE,EACzB,SAAA96D,CACD,EAAG,KACJ,OAAQA,EAAQ,CACd,IAAK,IACH,MAAO,CAAC5M,EAAG,EAAIP,EAAGrpB,GAASsxF,EAAKD,GAAK7xF,GAAU6xF,EAAKC,EAAG,EACzD,IAAK,KACH,MAAO,CAAC,EAAIjoE,EAAG,EAAIO,EAAG5pB,EAAOR,CAAM,EACrC,IAAK,KACH,MAAO,CAAC,EAAIoqB,EAAGP,EAAGrpB,GAASsxF,EAAKD,GAAK7xF,GAAU6xF,EAAKC,EAAG,EACzD,QACE,MAAO,CAACjoE,EAAGO,EAAG5pB,EAAOR,CAAM,CAC9B,CACF,EACDqvF,GAAA,YAAAc,GAAmB,UAAG,CACpB,KAAM,CACJ,EAAAtmE,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,EACA,iBAAkB,CAAC6xF,EAAIC,CAAE,EACzB,SAAA96D,CACD,EAAG,KACJ,OAAQA,EAAQ,CACd,IAAK,IACH,MAAO,CAAC,EAAI5M,EAAGP,EAAGrpB,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,EAAG,EACzD,IAAK,KACH,MAAO,CAAC,EAAIhoE,EAAG,EAAIO,EAAG5pB,EAAOR,CAAM,EACrC,IAAK,KACH,MAAO,CAACoqB,EAAG,EAAIP,EAAGrpB,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,EAAG,EACzD,QACE,MAAO,CAAChoE,EAAGO,EAAG5pB,EAAOR,CAAM,CAC9B,CACF,EACDsvF,GAAA,YAAAY,GAAW,SAACvqC,EAAM,CAEhB,GADA,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,MAAM,EAAI3wB,EAAA,KAAKo6D,GAAAwC,IAAL,UAA2BjsC,GACnE,KAAK,IAAK,CACZ,KAAK,kBAAiB,EACtB,KAAM,CAAC1a,EAAaC,CAAY,EAAI,KAAK,iBACzC,KAAK,QAAQ,KAAK,MAAQD,EAAa,KAAK,OAASC,CAAY,CAClE,CACD,KAAK,WAAU,CAChB,EACDqkD,GAAA,YAAAa,GAAU,UAAG,CACX,KAAM,CACJ,EAAAvmE,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,EACA,SAAAg3B,EACA,eAAA+6D,EACA,iBAAkB,CAACF,EAAIC,CAAE,CAC1B,EAAG,KACJ,QAAS96D,EAAW,EAAI+6D,GAAkB,GAAE,CAC1C,IAAK,GACH,MAAO,CAAC,EAAI3nE,EAAIpqB,EAAQ6pB,EAAG7pB,EAAQQ,CAAK,EAC1C,IAAK,GACH,MAAO,CAAC,EAAIqpB,EAAIrpB,EAAO,EAAI4pB,EAAIpqB,EAAQQ,EAAOR,CAAM,EACtD,IAAK,GACH,MAAO,CAACoqB,EAAG,EAAIP,EAAIrpB,EAAOR,EAAQQ,CAAK,EACzC,IAAK,GACH,MAAO,CAACqpB,EAAGO,EAAI5pB,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,GAAKrxF,GAASqxF,EAAKC,EAAG,EACzE,IAAK,GACH,MAAO,CAAC,EAAI1nE,EAAGP,EAAGrpB,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,EAAG,EACzD,IAAK,GACH,MAAO,CAAC,EAAIhoE,EAAI7pB,GAAU8xF,EAAKD,GAAK,EAAIznE,EAAGpqB,GAAU8xF,EAAKD,GAAKrxF,GAASqxF,EAAKC,EAAG,EAClF,IAAK,GACH,MAAO,CAAC1nE,EAAI5pB,GAASqxF,EAAKC,GAAK,EAAIjoE,EAAI7pB,GAAU8xF,EAAKD,GAAKrxF,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,EAAG,EAClG,IAAK,GACH,MAAO,CAAChoE,EAAIrpB,EAAO4pB,EAAIpqB,EAAQQ,EAAOR,CAAM,EAC9C,IAAK,GACH,MAAO,CAAC,EAAIoqB,EAAGP,EAAIrpB,EAAOR,EAAQQ,CAAK,EACzC,IAAK,IACH,MAAO,CAAC,EAAIqpB,EAAG,EAAIO,EAAG5pB,EAAOR,CAAM,EACrC,IAAK,IACH,MAAO,CAACoqB,EAAIpqB,EAAQ,EAAI6pB,EAAG7pB,EAAQQ,CAAK,EAC1C,IAAK,IACH,MAAO,CAACqpB,EAAI7pB,GAAU8xF,EAAKD,GAAKznE,EAAGpqB,GAAU8xF,EAAKD,GAAKrxF,GAASqxF,EAAKC,EAAG,EAC1E,IAAK,IACH,MAAO,CAAC,EAAI1nE,EAAI5pB,GAASqxF,EAAKC,GAAKjoE,EAAI7pB,GAAU8xF,EAAKD,GAAKrxF,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,EAAG,EAClG,IAAK,IACH,MAAO,CAAC,EAAIhoE,EAAG,EAAIO,EAAI5pB,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,GAAKrxF,GAASqxF,EAAKC,EAAG,EACjF,IAAK,IACH,MAAO,CAAC1nE,EAAG,EAAIP,EAAGrpB,GAASqxF,EAAKC,GAAK9xF,GAAU8xF,EAAKD,EAAG,EACzD,QACE,MAAO,CAAChoE,EAAGO,EAAG5pB,EAAOR,CAAM,CAC9B,CACF,EAxUDG,GAJI8uF,GAIG,iBAAiB,IACxB9uF,GALI8uF,GAKG,iBAAiB,MACxBt5D,EANIs5D,GAMGa,GAAe,MACtBn6D,EAPIs5D,GAOG2B,GAAoB,MAC3Bj7D,EARIs5D,GAQG+B,GAAyB,MAChCr7D,EATIs5D,GASG4B,GAAoB,KAC3Bl7D,EAVIs5D,GAUG0B,GAAsB,MAC7Bh7D,EAXIs5D,GAWG6B,GAAqB,MAC5Bn7D,EAZIs5D,GAYG8B,GAAwB,KAC/B5wF,GAbI8uF,GAaG,gBAAgB,GAbzB,IAAM+C,GAAN/C,8CAslBA,MAAMgD,EAAgB,CAYpB,YAAYpoE,EAAGO,EAAG6gB,EAAaC,EAAclU,EAAUyoD,EAAW,CAmBlE9pD,EAAA,KAAAu8D,IA9BAv8D,EAAA,KAAAqvD,GAAQ,IAAI,aAAa,CAAC,GAC1BrvD,EAAA,KAAA+oD,GAAA,QACA/oD,EAAA,KAAAw8D,GAAA,QACAx8D,EAAA,KAAA4uC,GAAA,QACA5uC,EAAA,KAAA2vD,GAAA,QACA3vD,EAAA,KAAA4vD,GAAA,QACA5vD,EAAA,KAAAy8D,GAAe,IACfz8D,EAAA,KAAA08D,GAAa,GACb18D,EAAA,KAAA6zD,GAAY,IAAI8I,IAChB38D,EAAA,KAAA66D,GAAA,QACA76D,EAAA,KAAA86D,GAAA,QAEE33D,EAAA,KAAK03D,GAAevlD,GACpBnS,EAAA,KAAK23D,GAAgBvlD,GACrBpS,EAAA,KAAKyrC,GAAYvtC,GACjB8B,EAAA,KAAKwsD,GAAa7F,GAClB,CAAC51D,EAAGO,CAAC,EAAI4K,EAAA,KAAKk9D,GAAAK,IAAL,UAAqB1oE,EAAGO,GACjC,MAAMwzD,EAAO9kD,EAAA,KAAK4lD,GAAQ,CAAC,IAAK,IAAK,IAAK,IAAK70D,EAAGO,CAAC,GACnD0O,EAAA,KAAKysD,GAAU,CAAC17D,EAAGO,CAAC,GACpB0O,EAAA,KAAKq5D,GAAS,CAAC,CACb,KAAAvU,EACA,OAAQhlD,EAAA,KAAK2sD,GACnB,CAAK,GACD3sD,EAAA,KAAKosD,IAAM,IAAIpH,EAAM,CAAC,CACvB,CACD,eAAe9yE,EAAM/D,EAAO,CACtB+D,IAAS,gBACXguB,EAAA,KAAKwsD,GAAav+E,EAErB,CAID,SAAU,CACR,MAAO,CAAC6xB,EAAA,KAAKu5D,KAAUv5D,EAAA,KAAKu5D,IAAO,SAAW,CAC/C,CACD,eAAgB,CACd,OAAOv5D,EAAA,KAAK2sD,IAAQ,QAAU,EAC/B,CACD,IAAI17D,EAAGO,EAAG,CACR,CAACP,EAAGO,CAAC,EAAI4K,EAAA,KAAKk9D,GAAAK,IAAL,UAAqB1oE,EAAGO,GACjC,KAAM,CAACsK,EAAIC,EAAIC,EAAIC,CAAE,EAAI+D,EAAA,KAAKosD,IAAM,SAAS,EAAG,CAAC,EAC3CU,EAAQ77D,EAAI+K,EACZ+wD,EAAQv7D,EAAIyK,EAElB,OADU,KAAK,MAAM+D,EAAA,KAAK43D,IAAe9K,EAAO9sD,EAAA,KAAK63D,IAAgB9K,CAAK,GACjE,EACA,MAET/sD,EAAA,KAAK2sD,IAAQ,KAAK17D,EAAGO,CAAC,EAClB,MAAMsK,CAAE,GACVkE,EAAA,KAAKosD,IAAM,IAAI,CAACpwD,EAAIC,EAAIhL,EAAGO,CAAC,EAAG,CAAC,EAChCwO,EAAA,KAAK8lD,IAAM,KAAK,IAAK,IAAK,IAAK,IAAK70D,EAAGO,CAAC,EACjC,CACL,KAAM,CACJ,EAAG,KAAK,UAAW,CACpB,CACT,IAEQ,MAAMwO,EAAA,KAAKosD,IAAM,CAAC,CAAC,GACrBpsD,EAAA,KAAK8lD,IAAM,OAAO,EAAG,CAAC,EAExB9lD,EAAA,KAAKosD,IAAM,IAAI,CAACtwD,EAAIC,EAAIC,EAAIC,EAAIhL,EAAGO,CAAC,EAAG,CAAC,EACxCwO,EAAA,KAAK8lD,IAAM,KAAK,GAAGqF,GAAQ,mBAAmBrvD,EAAIC,EAAIC,EAAIC,EAAIhL,EAAGO,CAAC,CAAC,EAC5D,CACL,KAAM,CACJ,EAAG,KAAK,UAAW,CACpB,CACP,GACG,CACD,IAAIP,EAAGO,EAAG,CACR,MAAM6wD,EAAS,KAAK,IAAIpxD,EAAGO,CAAC,EAC5B,OAAI6wD,IAGAriD,EAAA,KAAK2sD,IAAQ,SAAW,EACnB,CACL,KAAM,CACJ,EAAG,KAAK,UAAW,CACpB,CACT,EAEW,KACR,CACD,SAAS17D,EAAGO,EAAG6gB,EAAaC,EAAclU,EAAU,CAClD8B,EAAA,KAAK03D,GAAevlD,GACpBnS,EAAA,KAAK23D,GAAgBvlD,GACrBpS,EAAA,KAAKyrC,GAAYvtC,GACjB,CAACnN,EAAGO,CAAC,EAAI4K,EAAA,KAAKk9D,GAAAK,IAAL,UAAqB1oE,EAAGO,GACjC,MAAMwzD,EAAO9kD,EAAA,KAAK4lD,GAAQ,CAAC,IAAK,IAAK,IAAK,IAAK70D,EAAGO,CAAC,GACnD0O,EAAA,KAAKysD,GAAU,CAAC17D,EAAGO,CAAC,GACpB,MAAMm8D,EAAO3tD,EAAA,KAAKu5D,IAAO,GAAG,EAAE,EAC9B,OAAI5L,IACFA,EAAK,KAAO,IAAI,aAAaA,EAAK,IAAI,EACtCA,EAAK,OAAS,IAAI,aAAaA,EAAK,MAAM,GAE5C3tD,EAAA,KAAKu5D,IAAO,KAAK,CACf,KAAAvU,EACA,OAAQhlD,EAAA,KAAK2sD,GACnB,CAAK,EACD3sD,EAAA,KAAKosD,IAAM,IAAIpH,EAAM,CAAC,EACtB9kD,EAAA,KAAKu5D,GAAa,GAClB,KAAK,UAAS,EACP,IACR,CACD,gBAAiB,CACf,OAAOz5D,EAAA,KAAKu5D,IAAO,GAAG,EAAE,CACzB,CACD,eAAehtF,EAAS,CACtB,OAAKyzB,EAAA,KAAKu5D,KAGVv5D,EAAA,KAAKu5D,IAAO,KAAKhtF,CAAO,EACxB2zB,EAAA,KAAK4lD,GAAQv5E,EAAQ,MACrB2zB,EAAA,KAAKysD,GAAUpgF,EAAQ,QACvB2zB,EAAA,KAAKu5D,GAAa,GACX,CACL,KAAM,CACJ,EAAG,KAAK,UAAW,CACpB,CACP,GAVaz5D,EAAA,KAAK4wD,IAAU,eAAerkF,CAAO,CAW/C,CACD,mBAAoB,CAClB,GAAI,CAACyzB,EAAA,KAAKu5D,IACR,OAAOv5D,EAAA,KAAK4wD,IAAU,oBAExB5wD,EAAA,KAAKu5D,IAAO,MACZr5D,EAAA,KAAKs5D,GAAe,IACpB,QAAS9zF,EAAI,EAAG05B,EAAKY,EAAA,KAAKu5D,IAAO,OAAQ7zF,EAAI05B,EAAI15B,IAAK,CACpD,KAAM,CACJ,KAAAs/E,EACA,OAAA3uB,CACR,EAAUr2B,EAAA,KAAKu5D,IAAO7zF,CAAC,EACjBw6B,EAAA,KAAK4lD,GAAQd,GACb9kD,EAAA,KAAKysD,GAAUt2B,GACfn2B,EAAA,KAAKu5D,GAAa,GAClB,KAAK,UAAS,CACf,CACD,MAAO,CACL,KAAM,CACJ,EAAGz5D,EAAA,KAAKw5D,GACT,CACP,CACG,CACD,WAAY,CACV,MAAMI,EAASzO,GAAQ,SAASnrD,EAAA,KAAK8lD,IAAM,CAAC,CAAC,EACvC+T,EAAS1O,GAAQ,SAASnrD,EAAA,KAAK8lD,IAAM,CAAC,CAAC,EAC7C,GAAI9lD,EAAA,KAAK2sD,IAAQ,SAAW,EAC1B,OAAAzsD,EAAA,KAAKs5D,GAAe,GAAGx5D,EAAA,KAAKw5D,GAAY,MAAMI,CAAM,IAAIC,CAAM,MACvD75D,EAAA,KAAKw5D,IAEd,GAAIx5D,EAAA,KAAK2sD,IAAQ,QAAU,EAAG,CAC5B,MAAMjnF,EAAIs6B,EAAA,KAAKw5D,IAAa,YAAY,GAAG,EAC3Ct5D,EAAA,KAAKs5D,GAAe,GAAGx5D,EAAA,KAAKw5D,IAAa,MAAM,EAAG9zF,CAAC,CAAC,MAAMk0F,CAAM,IAAIC,CAAM,IAC1E35D,EAAA,KAAKu5D,GAAa,EACnB,CACD,GAAIz5D,EAAA,KAAK2sD,IAAQ,SAAW,EAAG,CAC7B,MAAMmN,EAAU3O,GAAQ,SAASnrD,EAAA,KAAK8lD,IAAM,EAAE,CAAC,EACzCiU,EAAU5O,GAAQ,SAASnrD,EAAA,KAAK8lD,IAAM,EAAE,CAAC,EAC/C,OAAA5lD,EAAA,KAAKs5D,GAAe,GAAGx5D,EAAA,KAAKw5D,GAAY,MAAMM,CAAO,IAAIC,CAAO,IAChE75D,EAAA,KAAKu5D,GAAa,IACXz5D,EAAA,KAAKw5D,GACb,CACD,MAAM7zF,EAAS,GACXq6B,EAAA,KAAKy5D,MAAe,IACtB9zF,EAAO,KAAK,KAAKi0F,CAAM,IAAIC,CAAM,EAAE,EACnC35D,EAAA,KAAKu5D,GAAa,IAEpB,QAAS/zF,EAAIs6B,EAAA,KAAKy5D,IAAYr6D,EAAKY,EAAA,KAAK8lD,IAAM,OAAQpgF,EAAI05B,EAAI15B,GAAK,EAAG,CACpE,KAAM,CAACs0F,EAAKC,EAAKC,EAAKC,EAAKlpE,EAAGO,CAAC,EAAIwO,EAAA,KAAK8lD,IAAM,MAAMpgF,EAAGA,EAAI,CAAC,EAAE,IAAIylF,GAAQ,QAAQ,EAClFxlF,EAAO,KAAK,IAAIq0F,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAIlpE,CAAC,IAAIO,CAAC,EAAE,CACrD,CACD,OAAA0O,EAAA,KAAKs5D,GAALx5D,EAAA,KAAKw5D,IAAgB7zF,EAAO,KAAK,GAAG,GACpCu6B,EAAA,KAAKu5D,GAAaz5D,EAAA,KAAK8lD,IAAM,QACtB9lD,EAAA,KAAKw5D,GACb,CACD,YAAYnnD,EAAaC,EAAcnU,EAAOotD,EAAa,CACzD,MAAMoC,EAAO3tD,EAAA,KAAKu5D,IAAO,GAAG,EAAE,EAC9B,OAAA5L,EAAK,KAAO,IAAI,aAAaA,EAAK,IAAI,EACtCA,EAAK,OAAS,IAAI,aAAaA,EAAK,MAAM,EAC1C3tD,EAAA,KAAK4wD,IAAU,MAAM5wD,EAAA,KAAKu5D,IAAQlnD,EAAaC,EAAcnU,EAAO6B,EAAA,KAAK2rC,IAAW3rC,EAAA,KAAK0sD,IAAYnB,CAAW,EAChHrrD,EAAA,KAAKksD,GAAQ,MACblsD,EAAA,KAAK4lD,GAAQ,MACb5lD,EAAA,KAAKq5D,GAAS,MACdr5D,EAAA,KAAKs5D,GAAe,MACbx5D,EAAA,KAAK4wD,GACb,CACD,IAAI,sBAAuB,CACzB,MAAO,CACL,KAAM,CACJ,QAAS,iBACV,EACD,UAAW,CACT,KAAM,EACP,EACD,KAAM,CAAC,EAAG,EAAG,EAAG,CAAC,CACvB,CACG,CACH,CArMExE,GAAA,YACAtG,GAAA,YACAyT,GAAA,YACA5tB,GAAA,YACA+gB,GAAA,YACAC,GAAA,YACA6M,GAAA,YACAC,GAAA,YACA7I,GAAA,YACAgH,GAAA,YACAC,GAAA,YAoBAyB,GAAA,YAAAK,GAAe,SAAC1oE,EAAGO,EAAG,CACpB,OAAO25D,GAAQ,gBAAgBl6D,EAAGO,EAAGwO,EAAA,KAAK43D,IAAc53D,EAAA,KAAK63D,IAAe73D,EAAA,KAAK2rC,GAAS,CAC3F,yDAsKH,MAAM+tB,WAAuBvO,EAAQ,CAArC,kCAsMEpuD,EAAA,KAAAq9D,IAIAr9D,EAAA,KAAAs9D,IAKAt9D,EAAA,KAAAu9D,IAyCAv9D,EAAA,KAAA01D,IAvPA11D,EAAA,KAAAquD,GAAA,QACAruD,EAAA,KAAAw9D,GAAmB,GACnBx9D,EAAA,KAAAkvD,GAAA,QACAlvD,EAAA,KAAAw8D,GAAA,QACAx8D,EAAA,KAAA66D,GAAA,QACA76D,EAAA,KAAA86D,GAAA,QACA96D,EAAA,KAAAy9D,GAAA,QACAz9D,EAAA,KAAA4uC,GAAA,QACA5uC,EAAA,KAAA2vD,GAAA,QACA,MAAM3H,EAAO1yC,EAAaC,EAAckJ,EAAapd,EAAUyoD,EAAW0E,EAAa,CACrFrrD,EAAA,KAAK03D,GAAevlD,GACpBnS,EAAA,KAAK23D,GAAgBvlD,GACrBpS,EAAA,KAAKs6D,GAAeh/C,GACpBtb,EAAA,KAAKyrC,GAAYvtC,GACjB8B,EAAA,KAAKwsD,GAAa7F,GAClB3mD,EAAA,KAAK+rD,GAAeV,GAAe,GACnCrrD,EAAA,KAAKq5D,GAASxU,GACd3oD,EAAA,KAAKk+D,GAAAG,IAAL,UACD,CACD,IAAI,WAAY,CACd,OAAOz6D,EAAA,KAAK0sD,GACb,CACD,eAAengF,EAAS,CACtB,OAAAyzB,EAAA,KAAKu5D,IAAO,KAAKhtF,CAAO,EACjB,CACL,KAAM,CACJ,EAAG,KAAK,UAAW,CACpB,CACP,CACG,CACD,mBAAoB,CAClB,OAAAyzB,EAAA,KAAKu5D,IAAO,MACL,CACL,KAAM,CACJ,EAAG,KAAK,UAAW,CACpB,CACP,CACG,CACD,WAAY,CACV,MAAM5zF,EAAS,GACf,SAAW,CACT,KAAAq/E,CACN,IAAShlD,EAAA,KAAKu5D,IAAQ,CAEhB,GADA5zF,EAAO,KAAK,IAAIwlF,GAAQ,SAASnG,EAAK,CAAC,CAAC,CAAC,IAAImG,GAAQ,SAASnG,EAAK,CAAC,CAAC,CAAC,EAAE,EACpEA,EAAK,SAAW,EAAG,CACrBr/E,EAAO,KAAK,GAAG,EACf,QACD,CACD,GAAIq/E,EAAK,SAAW,IAAM,MAAMA,EAAK,CAAC,CAAC,EAAG,CACxCr/E,EAAO,KAAK,IAAIwlF,GAAQ,SAASnG,EAAK,EAAE,CAAC,CAAC,IAAImG,GAAQ,SAASnG,EAAK,EAAE,CAAC,CAAC,EAAE,EAC1E,QACD,CACD,QAASt/E,EAAI,EAAG05B,EAAK4lD,EAAK,OAAQt/E,EAAI05B,EAAI15B,GAAK,EAAG,CAChD,KAAM,CAACs0F,EAAKC,EAAKC,EAAKC,EAAKlpE,EAAGO,CAAC,EAAIwzD,EAAK,SAASt/E,EAAGA,EAAI,CAAC,EAAE,IAAIylF,GAAQ,QAAQ,EAC/ExlF,EAAO,KAAK,IAAIq0F,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAIlpE,CAAC,IAAIO,CAAC,EAAE,CACrD,CACF,CACD,OAAO7rB,EAAO,KAAK,EAAE,CACtB,CACD,UAAU,CAAC40C,EAAOC,EAAO9Y,EAAWC,CAAU,EAAG6S,EAAc,CAC7D,MAAMkmD,EAAkB,GAClBC,EAAmB,GACnB,CAAC1pE,EAAGO,EAAG5pB,EAAOR,CAAM,EAAIg1B,EAAA,KAAKi+D,GAAAO,IAAL,WAC9B,IAAIzoD,EAAIC,EAAIjX,EAAIC,EAAIU,EAAIC,EAAIC,EAAIC,EAAI4+D,EACpC,OAAQ76D,EAAA,KAAK2rC,IAAS,CACpB,IAAK,GACHkvB,EAAY1P,GAAQ,SACpBh5C,EAAKoI,EACLnI,EAAKoI,EAAQ7Y,EACbxG,EAAKuG,EACLtG,EAAK,CAACuG,EACN7F,EAAKye,EAAQtpB,EAAIyQ,EACjB3F,EAAKye,GAAS,EAAIhpB,EAAIpqB,GAAUu6B,EAChC3F,EAAKue,GAAStpB,EAAIrpB,GAAS85B,EAC3BzF,EAAKue,GAAS,EAAIhpB,GAAKmQ,EACvB,MACF,IAAK,IACHk5D,EAAY1P,GAAQ,gBACpBh5C,EAAKoI,EACLnI,EAAKoI,EACLrf,EAAKuG,EACLtG,EAAKuG,EACL7F,EAAKye,EAAQ/oB,EAAIkQ,EACjB3F,EAAKye,EAAQvpB,EAAI0Q,EACjB3F,EAAKue,GAAS/oB,EAAIpqB,GAAUs6B,EAC5BzF,EAAKue,GAASvpB,EAAIrpB,GAAS+5B,EAC3B,MACF,IAAK,KACHk5D,EAAY1P,GAAQ,SACpBh5C,EAAKoI,EAAQ7Y,EACb0Q,EAAKoI,EACLrf,EAAK,CAACuG,EACNtG,EAAKuG,EACL7F,EAAKye,GAAS,EAAItpB,EAAIrpB,GAAS85B,EAC/B3F,EAAKye,EAAQhpB,EAAImQ,EACjB3F,EAAKue,GAAS,EAAItpB,GAAKyQ,EACvBzF,EAAKue,GAAShpB,EAAIpqB,GAAUu6B,EAC5B,MACF,IAAK,KACHk5D,EAAY1P,GAAQ,gBACpBh5C,EAAKoI,EAAQ7Y,EACb0Q,EAAKoI,EAAQ7Y,EACbxG,EAAK,CAACuG,EACNtG,EAAK,CAACuG,EACN7F,EAAKye,GAAS,EAAI/oB,EAAIpqB,GAAUs6B,EAChC3F,EAAKye,GAAS,EAAIvpB,EAAIrpB,GAAS+5B,EAC/B3F,EAAKue,GAAS,EAAI/oB,GAAKkQ,EACvBzF,EAAKue,GAAS,EAAIvpB,GAAK0Q,EACvB,KACH,CACD,SAAW,CACT,KAAAqjD,EACA,OAAA3uB,CACN,IAASr2B,EAAA,KAAKu5D,IACRmB,EAAgB,KAAKG,EAAU7V,EAAM7yC,EAAIC,EAAIjX,EAAIC,EAAIoZ,EAAe,IAAI,MAAMwwC,EAAK,MAAM,EAAI,IAAI,CAAC,EAClG2V,EAAiB,KAAKE,EAAUxkC,EAAQlkB,EAAIC,EAAIjX,EAAIC,EAAIoZ,EAAe,IAAI,MAAM6hB,EAAO,MAAM,EAAI,IAAI,CAAC,EAEzG,MAAO,CACL,MAAOqkC,EACP,OAAQC,EACR,KAAM,CAAC7+D,EAAIC,EAAIC,EAAIC,CAAE,CAC3B,CACG,CACD,OAAO,YAAYse,EAAOC,EAAO9Y,EAAWC,EAAY4pD,EAAa,CACnE,MAAO,CACL,MAAAxG,EACA,OAAA1uB,CACD,EACD,SAAAj4B,EACA,UAAAyoD,CACJ,EAAK,CACD,MAAMiU,EAAW,GACjB,IAAI3oD,EAAIC,EAAIjX,EAAIC,EAAIy/D,EACpB,OAAQz8D,EAAQ,CACd,IAAK,GACHy8D,EAAY1P,GAAQ,SACpBh5C,EAAK,CAACoI,EAAQ7Y,EACd0Q,EAAKoI,EAAQ7Y,EAAa,EAC1BxG,EAAK,EAAIuG,EACTtG,EAAK,GAAKuG,EACV,MACF,IAAK,IACHk5D,EAAY1P,GAAQ,gBACpBh5C,EAAK,CAACqI,EAAQ7Y,EACdyQ,EAAK,CAACmI,EAAQ7Y,EACdvG,EAAK,EAAIwG,EACTvG,EAAK,EAAIsG,EACT,MACF,IAAK,KACHm5D,EAAY1P,GAAQ,SACpBh5C,EAAKoI,EAAQ7Y,EAAY,EACzB0Q,EAAK,CAACoI,EAAQ7Y,EACdxG,EAAK,GAAKuG,EACVtG,EAAK,EAAIuG,EACT,MACF,IAAK,KACHk5D,EAAY1P,GAAQ,gBACpBh5C,EAAKqI,EAAQ7Y,EAAa,EAC1ByQ,EAAKmI,EAAQ7Y,EAAY,EACzBvG,EAAK,GAAKwG,EACVvG,EAAK,GAAKsG,EACV,KACH,CACD,GAAI,CAACqjD,EAAO,CACVA,EAAQ,GACR,UAAW/lC,KAASqX,EAAQ,CAC1B,MAAM1oD,EAAMqxC,EAAM,OAClB,GAAIrxC,IAAQ,EAAG,CACbo3E,EAAM,KAAK,IAAI,aAAa,CAAC,IAAK,IAAK,IAAK,IAAK/lC,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAAC,CAAC,EACrE,QACD,CACD,GAAIrxC,IAAQ,EAAG,CACbo3E,EAAM,KAAK,IAAI,aAAa,CAAC,IAAK,IAAK,IAAK,IAAK/lC,EAAM,CAAC,EAAGA,EAAM,CAAC,EAAG,IAAK,IAAK,IAAK,IAAKA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAAC,CAAC,EAC7G,QACD,CACD,MAAMgmC,EAAO,IAAI,aAAa,GAAKr3E,EAAM,EAAE,EAC3Co3E,EAAM,KAAKC,CAAI,EACf,GAAI,CAAClpD,EAAIC,EAAIC,EAAIC,EAAE,EAAI+iB,EAAM,SAAS,EAAG,CAAC,EAC1CgmC,EAAK,IAAI,CAAC,IAAK,IAAK,IAAK,IAAKlpD,EAAIC,CAAE,EAAG,CAAC,EACxC,QAASr2B,GAAI,EAAGA,GAAIiI,EAAKjI,IAAK,EAAG,CAC/B,MAAMurB,GAAI+tB,EAAMt5C,EAAC,EACX8rB,GAAIwtB,EAAMt5C,GAAI,CAAC,EACrBs/E,EAAK,IAAImG,GAAQ,mBAAmBrvD,EAAIC,EAAIC,EAAIC,GAAIhL,GAAGO,EAAC,GAAI9rB,GAAI,GAAK,CAAC,EACtE,CAACo2B,EAAIC,EAAIC,EAAIC,EAAE,EAAI,CAACD,EAAIC,GAAIhL,GAAGO,EAAC,CACjC,CACF,CACF,CACD,QAAS9rB,EAAI,EAAG05B,EAAK2lD,EAAM,OAAQr/E,EAAI05B,EAAI15B,IACzCo1F,EAAS,KAAK,CACZ,KAAMD,EAAU9V,EAAMr/E,CAAC,EAAE,IAAIurB,GAAKA,GAAK,GAAG,EAAGkhB,EAAIC,EAAIjX,EAAIC,CAAE,EAC3D,OAAQy/D,EAAUxkC,EAAO3wD,CAAC,EAAE,IAAIurB,GAAKA,GAAK,GAAG,EAAGkhB,EAAIC,EAAIjX,EAAIC,CAAE,CACtE,CAAO,EAEH,MAAMm1D,EAAW,IAAI,KAAK,UAAU,YACpC,OAAAA,EAAS,MAAMuK,EAAUp5D,EAAWC,EAAY,EAAGvD,EAAUyoD,EAAW0E,CAAW,EAC5EgF,CACR,CA0CD,IAAI,KAAM,CACR,OAAOvwD,EAAA,KAAKorD,GACb,CACD,eAAel5E,EAAM/D,EAAO,CAC1B,OAAI+D,IAAS,eACJkqB,EAAA,KAAKq2D,GAAA0B,IAAL,UAAsBhmF,GAExB,IACR,CAaD,uBAAuB,CAACvG,EAAOR,CAAM,EAAG+2B,EAAO,CAC7C,KAAM,CAAC48D,EAAYC,CAAU,EAAI5+D,EAAA,KAAKg+D,GAAAa,IAAL,WACjC/6D,EAAA,KAAK03D,GAAehwF,GACpBs4B,EAAA,KAAK23D,GAAgBzwF,GACrB84B,EAAA,KAAKs6D,GAAer8D,GACpB,KAAM,CAAC+8D,EAAYC,CAAU,EAAI/+D,EAAA,KAAKg+D,GAAAa,IAAL,WAC3BG,EAAcF,EAAaH,EAC3BM,EAAcF,EAAaH,EAC3BjuC,EAAO/sB,EAAA,KAAKorD,IAClB,OAAAr+B,EAAK,CAAC,GAAKquC,EACXruC,EAAK,CAAC,GAAKsuC,EACXtuC,EAAK,CAAC,GAAK,EAAIquC,EACfruC,EAAK,CAAC,GAAK,EAAIsuC,EACRtuC,CACR,CACD,eAAe3uB,EAAU,CACvB,OAAA8B,EAAA,KAAKq6D,GAAmBn8D,GACjB,CACL,KAAM,CACJ,UAAW,KAAK,iBACjB,CACP,CACG,CACD,IAAI,SAAU,CACZ,OAAO4B,EAAA,KAAKorD,IAAM,IAAID,GAAQ,QAAQ,EAAE,KAAK,GAAG,CACjD,CACD,IAAI,mBAAoB,CACtB,KAAM,CAACl6D,EAAGO,CAAC,EAAIwO,EAAA,KAAKorD,IACpB,MAAO,CACL,KAAM,CACJ,QAAS,KAAK,OACf,EACD,KAAM,CACJ,mBAAoB,GAAGD,GAAQ,SAASl6D,CAAC,CAAC,IAAIk6D,GAAQ,SAAS35D,CAAC,CAAC,EAClE,CACP,CACG,CACD,IAAI,mBAAoB,CACtB,KAAM,CAAI,EAAA5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAKorD,IAChC,IAAI5gF,EAAI,EACNC,EAAI,EACJuI,EAAI,EACJN,EAAI,EACJ7J,EAAI,EACJ8C,EAAI,EACN,OAAQq0B,EAAA,KAAKu6D,IAAgB,CAC3B,IAAK,IACH9vF,EAAIrD,EAASQ,EACboL,EAAI,CAACpL,EAAQR,EACbyB,EAAIjB,EACJ,MACF,IAAK,KACH4C,EAAI,GACJkI,EAAI,GACJ7J,EAAIjB,EACJ+D,EAAIvE,EACJ,MACF,IAAK,KACHqD,EAAI,CAACrD,EAASQ,EACdoL,EAAIpL,EAAQR,EACZuE,EAAIvE,EACJ,MACF,QACE,MAAO,EACV,CACD,MAAO,UAAUoD,CAAC,IAAIC,CAAC,IAAIuI,CAAC,IAAIN,CAAC,IAAIy4E,GAAQ,SAAStiF,CAAC,CAAC,IAAIsiF,GAAQ,SAASx/E,CAAC,CAAC,GAChF,CACD,6BAA6B,CAACkmC,EAAMC,EAAMsM,EAAUC,CAAS,EAAG,CAC9D,KAAM,CAACi9C,EAASC,CAAO,EAAIn/D,EAAA,KAAKg+D,GAAAa,IAAL,WACrB,CAAChqE,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAKorD,IACnC,GAAI,KAAK,IAAIxjF,EAAQ0zF,CAAO,GAAKnQ,GAAQ,WAAa,KAAK,IAAI/jF,EAASm0F,CAAO,GAAKpQ,GAAQ,UAAW,CACrG,MAAMh5C,EAAKN,EAAOuM,EAAW,GAAKntB,EAAIrpB,EAAQ,GACxCwqC,EAAKN,EAAOuM,EAAY,GAAK7sB,EAAIpqB,EAAS,GAChD,MAAO,CACL,KAAM,CACJ,mBAAoB,GAAG+jF,GAAQ,SAASt5C,CAAI,CAAC,IAAIs5C,GAAQ,SAASr5C,CAAI,CAAC,GACvE,UAAW,GAAG,KAAK,iBAAiB,cAAcK,CAAE,IAAIC,CAAE,GAC3D,CACT,CACK,CACD,MAAMopD,GAAOp9C,EAAW,EAAIk9C,IAAY1zF,EAAQ,EAAI0zF,GAC9CG,GAAOp9C,EAAY,EAAIk9C,IAAYn0F,EAAS,EAAIm0F,GAChDG,EAAM9zF,EAAQw2C,EACdu9C,EAAMv0F,EAASi3C,EACrB,MAAO,CACL,KAAM,CACJ,mBAAoB,GAAG8sC,GAAQ,SAASl6D,CAAC,CAAC,IAAIk6D,GAAQ,SAAS35D,CAAC,CAAC,GACjE,UAAW,GAAG,KAAK,iBAAiB,UAAUkqE,CAAG,IAAIC,CAAG,eAAoBxQ,GAAQ,SAASmQ,CAAO,CAAC,IAAInQ,GAAQ,SAASoQ,CAAO,CAAC,WAAWC,CAAG,IAAIC,CAAG,eAAoBtQ,GAAQ,SAAS,CAACmQ,CAAO,CAAC,IAAInQ,GAAQ,SAAS,CAACoQ,CAAO,CAAC,GACpO,CACP,CACG,CACD,4BAA4B,CAAC1pD,EAAMC,EAAMsM,EAAUC,CAAS,EAAG,CAC7D,KAAM,CAACi9C,EAASC,CAAO,EAAIn/D,EAAA,KAAKg+D,GAAAa,IAAL,WACrBluC,EAAO/sB,EAAA,KAAKorD,IACZ,CAACn6D,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI2lD,EAK9B,GAJAA,EAAK,CAAC,EAAIlb,EACVkb,EAAK,CAAC,EAAIjb,EACVib,EAAK,CAAC,EAAI3O,EACV2O,EAAK,CAAC,EAAI1O,EACN,KAAK,IAAIz2C,EAAQ0zF,CAAO,GAAKnQ,GAAQ,WAAa,KAAK,IAAI/jF,EAASm0F,CAAO,GAAKpQ,GAAQ,UAAW,CACrG,MAAMh5C,EAAKN,EAAOuM,EAAW,GAAKntB,EAAIrpB,EAAQ,GACxCwqC,EAAKN,EAAOuM,EAAY,GAAK7sB,EAAIpqB,EAAS,GAChD,SAAW,CACT,KAAA49E,EACA,OAAA3uB,CACR,IAAWr2B,EAAA,KAAKu5D,IACRpO,GAAQ,WAAWnG,EAAM7yC,EAAIC,EAAI4yC,CAAI,EACrCmG,GAAQ,WAAW90B,EAAQlkB,EAAIC,EAAIikB,CAAM,EAE3C,MAAO,CACL,KAAM,CACJ,QAAS,KAAK,OACf,EACD,KAAM,CACJ,mBAAoB,GAAG80B,GAAQ,SAASt5C,CAAI,CAAC,IAAIs5C,GAAQ,SAASr5C,CAAI,CAAC,GACvE,UAAW,KAAK,mBAAqB,KACrC,EAAG,KAAK,UAAW,CACpB,CACT,CACK,CACD,MAAM0pD,GAAOp9C,EAAW,EAAIk9C,IAAY1zF,EAAQ,EAAI0zF,GAC9CG,GAAOp9C,EAAY,EAAIk9C,IAAYn0F,EAAS,EAAIm0F,GAChDppD,EAAK,CAACqpD,GAAOvqE,EAAIqqE,GAAWzpD,EAAOypD,EACnClpD,EAAK,CAACqpD,GAAOjqE,EAAI+pE,GAAWzpD,EAAOypD,EACzC,GAAIC,IAAQ,GAAKC,IAAQ,GAAKtpD,IAAO,GAAKC,IAAO,EAC/C,SAAW,CACT,KAAA4yC,EACA,OAAA3uB,CACR,IAAWr2B,EAAA,KAAKu5D,IACRpO,GAAQ,SAASnG,EAAM7yC,EAAIC,EAAIopD,EAAKC,EAAKzW,CAAI,EAC7CmG,GAAQ,SAAS90B,EAAQlkB,EAAIC,EAAIopD,EAAKC,EAAKplC,CAAM,EAGrD,MAAO,CACL,KAAM,CACJ,QAAS,KAAK,OACf,EACD,KAAM,CACJ,mBAAoB,GAAG80B,GAAQ,SAASt5C,CAAI,CAAC,IAAIs5C,GAAQ,SAASr5C,CAAI,CAAC,GACvE,UAAW,KAAK,mBAAqB,KACrC,EAAG,KAAK,UAAW,CACpB,CACP,CACG,CACD,+BAA+B,CAACD,EAAMC,CAAI,EAAG8pD,EAAkB,CAC7D,KAAM,CAACC,EAAgBC,CAAe,EAAIF,EACpC7uC,EAAO/sB,EAAA,KAAKorD,IACZj5C,EAAKN,EAAOkb,EAAK,CAAC,EAClB3a,EAAKN,EAAOib,EAAK,CAAC,EACxB,GAAI/sB,EAAA,KAAK43D,MAAiBiE,GAAkB77D,EAAA,KAAK63D,MAAkBiE,EACjE,SAAW,CACT,KAAA9W,EACA,OAAA3uB,CACR,IAAWr2B,EAAA,KAAKu5D,IACRpO,GAAQ,WAAWnG,EAAM7yC,EAAIC,EAAI4yC,CAAI,EACrCmG,GAAQ,WAAW90B,EAAQlkB,EAAIC,EAAIikB,CAAM,MAEtC,CACL,MAAMl7B,EAAK6E,EAAA,KAAK43D,IAAeiE,EACzBzgE,EAAK4E,EAAA,KAAK63D,IAAgBiE,EAChC57D,EAAA,KAAK03D,GAAeiE,GACpB37D,EAAA,KAAK23D,GAAgBiE,GACrB,SAAW,CACT,KAAA9W,EACA,OAAA3uB,CACR,IAAWr2B,EAAA,KAAKu5D,IACRpO,GAAQ,SAASnG,EAAM7yC,EAAIC,EAAIjX,EAAIC,EAAI4pD,CAAI,EAC3CmG,GAAQ,SAAS90B,EAAQlkB,EAAIC,EAAIjX,EAAIC,EAAIi7B,CAAM,EAEjDtJ,EAAK,CAAC,GAAK5xB,EACX4xB,EAAK,CAAC,GAAK3xB,CACZ,CACD,OAAA2xB,EAAK,CAAC,EAAIlb,EACVkb,EAAK,CAAC,EAAIjb,EACH,CACL,KAAM,CACJ,QAAS,KAAK,OACf,EACD,KAAM,CACJ,EAAG,KAAK,UAAW,EACnB,mBAAoB,GAAGq5C,GAAQ,SAASt5C,CAAI,CAAC,IAAIs5C,GAAQ,SAASr5C,CAAI,CAAC,EACxE,CACP,CACG,CACD,IAAI,sBAAuB,CACzB,MAAMib,EAAO/sB,EAAA,KAAKorD,IAClB,MAAO,CACL,KAAM,CACJ,QAAS,KAAK,OACf,EACD,UAAW,CACT,KAAM,EACP,EACD,KAAM,CACJ,EAAG,KAAK,UAAW,EACnB,mBAAoB,GAAGD,GAAQ,SAASp+B,EAAK,CAAC,CAAC,CAAC,IAAIo+B,GAAQ,SAASp+B,EAAK,CAAC,CAAC,CAAC,GAC7E,UAAW,KAAK,mBAAqB,IACtC,EACD,KAAAA,CACN,CACG,CACH,CA5cEq+B,GAAA,YACAmP,GAAA,YACAtO,GAAA,YACAsN,GAAA,YACA3B,GAAA,YACAC,GAAA,YACA2C,GAAA,YACA7uB,GAAA,YACA+gB,GAAA,YA6LA0N,GAAA,YAAAa,GAAoB,SAACpU,EAAY7mD,EAAA,KAAK0sD,IAAY,CAChD,MAAMqP,EAAS/7D,EAAA,KAAKisD,IAAepF,EAAY,EAAI7mD,EAAA,KAAKw6D,IACxD,OAAOx6D,EAAA,KAAK2rC,IAAY,MAAQ,EAAI,CAACowB,EAAS/7D,EAAA,KAAK43D,IAAcmE,EAAS/7D,EAAA,KAAK63D,GAAa,EAAI,CAACkE,EAAS/7D,EAAA,KAAK63D,IAAekE,EAAS/7D,EAAA,KAAK43D,GAAY,CACzJ,EACDyC,GAAA,YAAAO,GAAoB,UAAG,CACrB,KAAM,CAAC3pE,EAAGO,EAAG5pB,EAAOR,CAAM,EAAI44B,EAAA,KAAKorD,IAC7B,CAACkQ,EAASC,CAAO,EAAIn/D,EAAA,KAAKg+D,GAAAa,IAAL,UAA0B,GACrD,MAAO,CAAChqE,EAAIqqE,EAAS9pE,EAAI+pE,EAAS3zF,EAAQ,EAAI0zF,EAASl0F,EAAS,EAAIm0F,CAAO,CAC5E,EACDjB,GAAA,YAAAG,GAAY,UAAG,CACb,MAAM1tC,EAAO7sB,EAAA,KAAKkrD,GAAQ,IAAI,aAAa,CAAC,IAAU,IAAU,KAAW,IAAS,CAAC,GACrF,SAAW,CACT,KAAApG,CACN,IAAShlD,EAAA,KAAKu5D,IAAQ,CAChB,GAAIvU,EAAK,QAAU,GAAI,CACrB,QAASt/E,EAAI,EAAG05B,EAAK4lD,EAAK,OAAQt/E,EAAI05B,EAAI15B,GAAK,EAAG,CAChD,KAAM,CAACurB,EAAGO,CAAC,EAAIwzD,EAAK,SAASt/E,EAAGA,EAAI,CAAC,EACrCqnD,EAAK,CAAC,EAAI,KAAK,IAAIA,EAAK,CAAC,EAAG97B,CAAC,EAC7B87B,EAAK,CAAC,EAAI,KAAK,IAAIA,EAAK,CAAC,EAAGv7B,CAAC,EAC7Bu7B,EAAK,CAAC,EAAI,KAAK,IAAIA,EAAK,CAAC,EAAG97B,CAAC,EAC7B87B,EAAK,CAAC,EAAI,KAAK,IAAIA,EAAK,CAAC,EAAGv7B,CAAC,CAC9B,CACD,QACD,CACD,IAAI6T,EAAQ2/C,EAAK,CAAC,EAChB5/C,EAAQ4/C,EAAK,CAAC,EAChB,QAASt/E,EAAI,EAAG05B,EAAK4lD,EAAK,OAAQt/E,EAAI05B,EAAI15B,GAAK,EAAG,CAChD,KAAM,CAACs0F,EAAKC,EAAKC,EAAKC,EAAKlpE,EAAGO,CAAC,EAAIwzD,EAAK,SAASt/E,EAAGA,EAAI,CAAC,EACzDsT,GAAK,kBAAkBqsB,EAAOD,EAAO40D,EAAKC,EAAKC,EAAKC,EAAKlpE,EAAGO,EAAGu7B,CAAI,EACnE1nB,EAAQpU,EACRmU,EAAQ5T,CACT,CACF,CACD,KAAM,CAAC8pE,EAASC,CAAO,EAAIn/D,EAAA,KAAKg+D,GAAAa,IAAL,WAC3BluC,EAAK,CAAC,EAAIv3B,GAAUu3B,EAAK,CAAC,EAAIuuC,EAAS,EAAG,CAAC,EAC3CvuC,EAAK,CAAC,EAAIv3B,GAAUu3B,EAAK,CAAC,EAAIwuC,EAAS,EAAG,CAAC,EAC3CxuC,EAAK,CAAC,EAAIv3B,GAAUu3B,EAAK,CAAC,EAAIuuC,EAAS,EAAG,CAAC,EAC3CvuC,EAAK,CAAC,EAAIv3B,GAAUu3B,EAAK,CAAC,EAAIwuC,EAAS,EAAG,CAAC,EAC3CxuC,EAAK,CAAC,GAAKA,EAAK,CAAC,EACjBA,EAAK,CAAC,GAAKA,EAAK,CAAC,CAClB,EAUD0lC,GAAA,YAAA0B,GAAgB,SAACtN,EAAW,CAC1B,KAAM,CAACkU,EAAYC,CAAU,EAAI5+D,EAAA,KAAKg+D,GAAAa,IAAL,WACjC/6D,EAAA,KAAKwsD,GAAa7F,GAClB,KAAM,CAACqU,EAAYC,CAAU,EAAI/+D,EAAA,KAAKg+D,GAAAa,IAAL,WAC3B,CAACG,EAAaC,CAAW,EAAI,CAACH,EAAaH,EAAYI,EAAaH,CAAU,EAC9EjuC,EAAO/sB,EAAA,KAAKorD,IAClB,OAAAr+B,EAAK,CAAC,GAAKquC,EACXruC,EAAK,CAAC,GAAKsuC,EACXtuC,EAAK,CAAC,GAAK,EAAIquC,EACfruC,EAAK,CAAC,GAAK,EAAIsuC,EACRtuC,CACR,EAkNH,MAAMivC,WAA0B7F,EAAe,CAC7C,YAAY8F,EAAkB,CAC5B,QACA,KAAK,gBAAkBA,EACvB,MAAM,iBAAiB,CACrB,KAAM,OACN,OAAQ17C,GAAiB,kBACzB,iBAAkB,EAClB,eAAgB,EAChB,iBAAkB,QAClB,kBAAmB,QACnB,oBAAqB,EAC3B,CAAK,CACF,CACD,kBAAkBruC,EAAM/D,EAAO,CACzB+D,IAAS,iBACX/D,MAAU,KAAK,cAAc,GAC7BA,GAAS,KAAK,gBAAgB,WAEhC,MAAM,kBAAkB+D,EAAM/D,CAAK,CACpC,CACD,OAAQ,CACN,MAAM20C,EAAQ,IAAIk5C,GAAkB,KAAK,eAAe,EACxD,OAAAl5C,EAAM,UAAU,IAAI,EACbA,CACR,CACH,WACA,MAAMo5C,GAAN,MAAMA,WAAkB9C,EAAc,CAIpC,YAAY/tF,EAAQ,CAClB,MAAM,CACJ,GAAGA,EACH,KAAM,WACZ,CAAK,EAiJH0xB,EAAA,KAAA+rD,IAhJE,KAAK,qBAAuB,GAC5B,KAAK,cAAgB,yBACtB,CACD,OAAO,WAAW90C,EAAMtP,EAAW,CACjC6b,GAAiB,WAAWvM,EAAMtP,CAAS,EAC3C,KAAK,uBAAyB,IAAIs3D,GAAkBt3D,EAAU,cAAc,CAC7E,CACD,OAAO,yBAAyBnvB,EAAS,CACvC,MAAMutC,EAAQ,KAAK,uBAAuB,MAAK,EAC/C,OAAAA,EAAM,iBAAiBvtC,CAAO,EACvButC,CACR,CACD,WAAW,yBAA0B,CACnC,MAAO,EACR,CACD,WAAW,UAAW,CACpB,OAAOvrB,GAAO,KAAM,WAAY,IAAI,IAAI,CAAC,CAAC5C,GAA2B,cAAe,cAAc,EAAG,CAACA,GAA2B,UAAW,QAAQ,EAAG,CAACA,GAA2B,YAAa,gBAAgB,CAAC,CAAC,CAAC,CACpN,CACD,OAAO,qBAAqB1D,EAAGO,EAAG6gB,EAAaC,EAAclU,EAAU,CACrE,OAAO,IAAIi7D,GAAgBpoE,EAAGO,EAAG6gB,EAAaC,EAAclU,EAAU,KAAK,uBAAuB,cAAc,CAAC,CAClH,CACD,OAAO,gBAAgBmc,EAAOC,EAAO9Y,EAAWC,EAAY4pD,EAAavoF,EAAM,CAC7E,OAAO02F,GAAe,YAAYn/C,EAAOC,EAAO9Y,EAAWC,EAAY4pD,EAAavoF,CAAI,CACzF,CACD,aAAa,YAAYA,EAAM8hC,EAAQJ,EAAW,CAChD,IAAIghC,EAAc,KAClB,GAAI1iE,aAAgBu3E,GAAsB,CACxC,KAAM,CACJ,KAAM,CACJ,SAAAoM,EACA,KAAAtrD,EACA,SAAA+C,EACA,GAAArpB,EACA,MAAA+rB,EACA,QAAAq0D,EACA,YAAa,CACX,SAAUtO,CACX,EACD,SAAAP,CACD,EACD,OAAQ,CACN,KAAM,CACJ,WAAA93C,CACD,CACF,CACF,EAAGxrC,EACJ0iE,EAAc1iE,EAAO,CACnB,eAAgB4xB,GAAqB,IACrC,MAAO,MAAM,KAAKkM,CAAK,EACvB,UAAA+lD,EACA,QAAAsO,EACA,MAAO,CACL,OAAQxO,CACT,EACD,MAAO,KACP,UAAWn4C,EAAa,EACxB,KAAMnT,EAAK,MAAM,CAAC,EAClB,SAAA+C,EACA,GAAArpB,EACA,QAAS,GACT,SAAAuxE,CACR,CACK,CACD,MAAM9jD,EAAS,MAAM,MAAM,YAAYx/B,EAAM8hC,EAAQJ,CAAS,EAC9D,OAAAlC,EAAO,oBAAsBx/B,EAAK,IAAM,KACxCw/B,EAAO,aAAekjC,EACfljC,CACR,CACD,iBAAkB,CAChB,GAAI,CAAC,KAAK,OACR,OAEF,MAAM,gBAAe,EACrB,KAAM,CACJ,QAAA25D,EACA,gBAAAhF,EACA,OAAAryD,CACD,EAAG,KACJqyD,EAAgB,kBAAkB,cAAc,EAChDryD,EAAO,UAAU,iBAAiBq3D,EAAShF,EAAgB,gBAAe,CAAE,CAC7E,CACD,OAAO,4BAA6B,CAClC,MAAMryD,EAAS,KAAK,eACfA,IAGL,MAAM,2BAA0B,EAChC,KAAK,uBAAuB,kBAAkB,cAAc,EAC5DA,EAAO,UAAU,iBAAiB,KAAK,eAAgB,KAAK,uBAAuB,gBAAe,CAAE,EACrG,CACD,qBAAqB,CACnB,MAAAhE,EACA,UAAA+lD,EACA,QAAAsO,CACJ,EAAK,CACD,KAAK,gBAAkB+G,GAAU,yBAAyB,CACxD,OAAQljF,GAAK,aAAa,GAAG8nB,CAAK,EAClC,eAAgB+lD,EAChB,iBAAkBsO,CACxB,CAAK,CACF,CACD,UAAU3gD,EAAe,GAAO,CAC9B,GAAI,KAAK,UACP,OAAO,KAET,GAAI,KAAK,QACP,OAAO,KAAK,mBAEd,KAAM,CACJ,MAAAuwC,EACA,OAAA1uB,EACA,KAAAh7B,CACN,EAAQ,KAAK,cAAcmZ,CAAY,EAC7B,CACJ,gBAAiB,CACf,OAAA4nD,EACA,iBAAkBjH,EAClB,eAAgBtO,CACjB,CACF,EAAG,KACE/2C,EAAa,CACjB,eAAgBlb,GAAqB,IACrC,MAAO2rB,GAAiB,cAAc,QAAQ67C,CAAM,EACpD,QAAAjH,EACA,UAAAtO,EACA,MAAO,CACL,MAAA9B,EACA,OAAA1uB,CACD,EACD,UAAW,KAAK,UAChB,KAAAh7B,EACA,SAAU,KAAK,SACf,mBAAoB,KAAK,mBAC/B,EACI,OAAImZ,GACF1E,EAAW,OAAS,GACbA,GAEL,KAAK,qBAAuB,CAAC1T,EAAA,KAAK0sD,GAAA4B,IAAL,UAAwB56C,GAChD,MAETA,EAAW,GAAK,KAAK,oBACdA,EACR,CAUD,wBAAwB2C,EAAY,CAClC,KAAM,CACJ,OAAA4jB,EACA,KAAAh7B,CACN,EAAQ,KAAK,cAAc,EAAK,EAC5B,OAAAoX,EAAW,aAAa,CACtB,KAAApX,EACA,UAAW,KAAK,gBAAgB,cAAc,EAC9C,OAAAg7B,CACN,CAAK,EACM,IACR,CACH,EArBEyyB,GAAA,YAAA4B,GAAkB,SAAC56C,EAAY,CAC7B,KAAM,CACJ,MAAAhP,EACA,UAAA+lD,EACA,QAAAsO,EACA,UAAAvkD,CACN,EAAQ,KAAK,aACT,OAAO,KAAK,eAAiB,KAAK,iBAAmBd,EAAW,MAAM,KAAK,CAAC98B,EAAGtN,IAAMsN,IAAM8tB,EAAMp7B,CAAC,CAAC,GAAKoqC,EAAW,YAAc+2C,GAAa/2C,EAAW,UAAYqlD,GAAWrlD,EAAW,YAAcc,CAC1M,EAhKDrpC,GADI20F,GACG,QAAQ,OACf30F,GAFI20F,GAEG,cAActnE,GAAqB,KAC1CrtB,GAHI20F,GAGG,yBAAyB,MAHlC,IAAMG,GAANH,GAkLA,MAAMI,WAA2B5C,EAAe,CAC9C,WAAY,CACV,IAAIv+E,EAAO,MAAM,YACjB,OAAKA,EAAK,SAAS,GAAG,IACpBA,GAAQ,KAEHA,CACR,CACH,CAOA,MAAMohF,GAAqB,EACrBC,GAA2B,8EACjC,MAAMrmE,EAAmB,CA8VvB,OAAO,wBAAwBplB,EAAM,CACnC,WAAA28D,EACA,UAAA+uB,EACA,WAAAC,CACD,EAAEh7D,EAAWC,EAAYvD,EAAUmtD,EAAa,CAC/C,IAAIvlF,EAAS,IAAI,gBAAgB,EAAG,CAAC,EACjCM,EAAMN,EAAO,WAAW,KAAM,CAChC,MAAO,EACb,CAAK,EACD,MAAMs4D,EAAW,IACX5a,EAAOp9C,EAAI,KAAO,GAAGm2F,CAAS,IAAIC,CAAU,IAAIp+B,CAAQ,MAAMoP,CAAU,GACxE,CACJ,sBAAAivB,EACA,uBAAAC,EACA,wBAAAC,EACA,yBAAAC,EACA,sBAAAC,EACA,uBAAAC,EACA,MAAAp1F,CACN,EAAQtB,EAAI,YAAYyK,CAAI,EAClBksF,EAAQ,IACRtrC,EAAc,KAAK,KAAK,KAAK,IAAI,KAAK,IAAIgrC,CAAqB,EAAI,KAAK,IAAIC,CAAsB,GAAK,EAAGh1F,CAAK,EAAIq1F,CAAK,EACxHrrC,EAAe,KAAK,KAAK,KAAK,IAAI,KAAK,IAAIirC,CAAuB,EAAI,KAAK,IAAIC,CAAwB,GAAKx+B,EAAU,KAAK,IAAIy+B,CAAqB,EAAI,KAAK,IAAIC,CAAsB,GAAK1+B,CAAQ,EAAI2+B,CAAK,EACnNj3F,EAAS,IAAI,gBAAgB2rD,EAAaC,CAAY,EACtDtrD,EAAMN,EAAO,WAAW,KAAM,CAC5B,MAAO,GACP,mBAAoB,EAC1B,CAAK,EACDM,EAAI,KAAOo9C,EACXp9C,EAAI,OAAS,eACbA,EAAI,UAAY,QAChBA,EAAI,SAAS,EAAG,EAAGqrD,EAAaC,CAAY,EAC5CtrD,EAAI,UAAY,QAChBA,EAAI,SAASyK,EAAM4gD,GAAesrC,EAAQ,GAAK,EAAGrrC,GAAgB,EAAIqrC,GAAS,CAAC,EAChF,MAAMC,EAAW9gE,EAAA,KAAK+gE,GAAAC,IAAL,UAAc92F,EAAI,aAAa,EAAG,EAAGqrD,EAAaC,CAAY,EAAE,MAC3EyrC,GAAYjhE,EAAA,KAAKkhE,GAAAC,IAAL,UAAmBL,GAC/Bl2F,GAAYo1B,EAAA,KAAKohE,GAAAC,IAAL,UAAqBJ,IACjCK,GAActhE,EAAA,KAAKuhE,GAAAC,IAAL,UAAmBV,EAAUvrC,EAAaC,EAAc5qD,IAC5E,OAAO,KAAK,kBAAkB,CAC5B,MAAO,CACL,OAAQ02F,GACR,MAAO/rC,EACP,OAAQC,CACT,EACD,UAAAlwB,EACA,WAAAC,EACA,SAAAvD,EACA,YAAAmtD,EACA,WAAY,GACZ,YAAa,EACnB,CAAK,CACF,CACD,OAAO,QAAQnlD,EAAQ1E,EAAWC,EAAYvD,EAAUmtD,EAAa,CACnE,KAAM,CAAC2R,EAAUt1F,EAAOR,CAAM,EAAIg1B,EAAA,KAAKyhE,GAAAC,IAAL,UAAoB13D,GAChD,CAACzgC,EAAQ03F,CAAS,EAAIjhE,EAAA,KAAK2hE,GAAAC,IAAL,UAAsBd,EAAUt1F,EAAOR,EAAQ,KAAK,MAAMQ,EAAOR,CAAM,EAAI44B,EAAA,KAAKi+D,IAAY,aAAcj+D,EAAA,KAAKi+D,IAAY,OAAQj+D,EAAA,KAAKi+D,IAAY,YAC1Kj3F,EAAYo1B,EAAA,KAAKohE,GAAAC,IAAL,UAAqBJ,GACjCK,EAActhE,EAAA,KAAKuhE,GAAAC,IAAL,UAAmBj4F,EAAQiC,EAAOR,EAAQJ,GAC9D,OAAO,KAAK,kBAAkB,CAC5B,MAAO,CACL,OAAQ02F,EACR,MAAA91F,EACA,OAAAR,CACD,EACD,UAAAs6B,EACA,WAAAC,EACA,SAAAvD,EACA,YAAAmtD,EACA,WAAY,GACZ,YAAa,EACnB,CAAK,CACF,CACD,OAAO,kBAAkB,CACvB,MAAAxG,EACA,UAAArjD,EACA,WAAAC,EACA,SAAAvD,EACA,YAAAmtD,EACA,WAAA2S,EACA,YAAAC,CACJ,EAAK,CACG//D,EAAW,MAAQ,IACrB,CAACsD,EAAWC,CAAU,EAAI,CAACA,EAAYD,CAAS,GAElD,KAAM,CACJ,OAAA08D,EACA,MAAAx2F,EACA,OAAAR,CACD,EAAG29E,EACE8B,EAAY9B,EAAM,WAAa,EAC/BsZ,EAAiB,GACjBl4F,EAAQ,KAAK,IAAIu7B,EAAY95B,EAAO+5B,EAAav6B,CAAM,EACvDk3F,EAASn4F,EAAQu7B,EACjB68D,EAASp4F,EAAQw7B,EACjB68D,EAAY,GAClB,SAAW,CACT,OAAAnoC,CACD,IAAI+nC,EAAQ,CACX,MAAMK,EAAgBP,EAAa9hE,EAAA,KAAKsiE,GAAAC,IAAL,UAAqBtoC,GAAUA,EAClE,GAAI,CAACooC,EACH,SAEFD,EAAU,KAAKC,CAAa,EAC5B,MAAM9wF,EAAM8wF,EAAc,OACpBG,EAAY,IAAI,aAAajxF,CAAG,EAChCq3E,EAAO,IAAI,aAAa,GAAKr3E,IAAQ,EAAI,EAAIA,EAAM,EAAE,EAK3D,GAJA0wF,EAAe,KAAK,CAClB,KAAArZ,EACA,OAAQ4Z,CAChB,CAAO,EACGjxF,IAAQ,EAAG,CACbixF,EAAU,CAAC,EAAIH,EAAc,CAAC,EAAIH,EAClCM,EAAU,CAAC,EAAIH,EAAc,CAAC,EAAIF,EAClCvZ,EAAK,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK4Z,EAAU,CAAC,EAAGA,EAAU,CAAC,CAAC,EAAG,CAAC,EAC5D,QACD,CACD,GAAI,CAAC9iE,EAAIC,GAAIC,GAAIC,EAAE,EAAIwiE,EACvB3iE,GAAMwiE,EACNviE,IAAMwiE,EACNviE,IAAMsiE,EACNriE,IAAMsiE,EACNK,EAAU,IAAI,CAAC9iE,EAAIC,GAAIC,GAAIC,EAAE,EAAG,CAAC,EACjC+oD,EAAK,IAAI,CAAC,IAAK,IAAK,IAAK,IAAKlpD,EAAIC,EAAE,EAAG,CAAC,EACxC,QAASr2B,GAAI,EAAGA,GAAIiI,EAAKjI,IAAK,EAAG,CAC/B,MAAMurB,GAAI2tE,EAAUl5F,EAAC,EAAI+4F,EAAc/4F,EAAC,EAAI44F,EACtC9sE,EAAIotE,EAAUl5F,GAAI,CAAC,EAAI+4F,EAAc/4F,GAAI,CAAC,EAAI64F,EACpDvZ,EAAK,IAAImG,GAAQ,mBAAmBrvD,EAAIC,GAAIC,GAAIC,GAAIhL,GAAGO,CAAC,GAAI9rB,GAAI,GAAK,CAAC,EACtE,CAACo2B,EAAIC,GAAIC,GAAIC,EAAE,EAAI,CAACD,GAAIC,GAAIhL,GAAGO,CAAC,CACjC,CACF,CACD,GAAI6sE,EAAe,SAAW,EAC5B,OAAO,KAET,MAAM5Q,EAAU0Q,EAAc,IAAI7B,GAAuB,IAAI5C,GAC7D,OAAAjM,EAAQ,MAAM4Q,EAAgB38D,EAAWC,EAAY,EAAGvD,EAAU+/D,EAAc,EAAItX,EAAW0E,CAAW,EACnG,CACL,QAAAkC,EACA,UAAA+Q,EACA,YAAAL,EACA,UAAAtX,EACA,MAAAj/E,EACA,OAAAR,CACN,CACG,CACD,aAAa,kBAAkB,CAC7B,SAAAmpF,EACA,YAAA4N,EACA,UAAAtX,EACA,MAAAj/E,EACA,OAAAR,CACJ,EAAK,CACD,IAAIy3F,EAAU,IACVC,EAAU,KACVC,EAAiB,EACrB,UAAW1oC,KAAUk6B,EAAU,CAC7BwO,GAAkB1oC,EAAO,OACzB,QAAS3wD,EAAI,EAAG05B,EAAKi3B,EAAO,OAAQ3wD,EAAI05B,EAAI15B,IAAK,CAC/C,MAAMs5F,EAAK3oC,EAAO3wD,CAAC,EAAI2wD,EAAO3wD,EAAI,CAAC,EACnCm5F,EAAU,KAAK,IAAIA,EAASG,CAAE,EAC9BF,EAAU,KAAK,IAAIA,EAASE,CAAE,CAC/B,CACF,CACD,IAAIC,EACAJ,GAAW,MAAQC,GAAW,IAChCG,EAAa,UACJJ,GAAW,QAAUC,GAAW,MACzCG,EAAa,WAEbA,EAAa,WAEf,MAAMtxF,EAAM4iF,EAAS,OACf2O,EAAe3C,GAAqBC,GAA2B7uF,EAC/D+2E,EAAS,IAAI,YAAYwa,CAAY,EAC3C,IAAIj7C,EAAS,EACbygC,EAAOzgC,GAAQ,EAAIi7C,EAAe,YAAY,mBAAqBH,EAAiB,EAAIpxF,GAAOsxF,EAAW,kBAC1Gva,EAAOzgC,GAAQ,EAAI,EACnBygC,EAAOzgC,GAAQ,EAAIr8C,EACnB88E,EAAOzgC,GAAQ,EAAI78C,EACnBs9E,EAAOzgC,GAAQ,EAAIk6C,EAAc,EAAI,EACrCzZ,EAAOzgC,GAAQ,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM4iC,GAAa,CAAC,CAAC,EACzDnC,EAAOzgC,GAAQ,EAAIt2C,EACnB+2E,EAAOzgC,GAAQ,EAAIg7C,EAAW,kBAC9B,UAAW5oC,KAAUk6B,EACnB7L,EAAOzgC,GAAQ,EAAIoS,EAAO,OAAS,EACnCquB,EAAOzgC,GAAQ,EAAIoS,EAAO,CAAC,EAC3BquB,EAAOzgC,GAAQ,EAAIoS,EAAO,CAAC,EAE7B,MAAMxG,EAAK,IAAI,kBAAkB,aAAa,EACxCsvC,EAAStvC,EAAG,SAAS,UAAS,EACpC,MAAMsvC,EAAO,MACbA,EAAO,MAAMza,CAAM,EACnB,MAAM0a,EAAaH,EAAW,UAAU,YACxC,UAAW5oC,KAAUk6B,EAAU,CAC7B,MAAM8O,EAAQ,IAAID,EAAW/oC,EAAO,OAAS,CAAC,EAC9C,QAAS3wD,EAAI,EAAG05B,EAAKi3B,EAAO,OAAQ3wD,EAAI05B,EAAI15B,IAC1C25F,EAAM35F,EAAI,CAAC,EAAI2wD,EAAO3wD,CAAC,EAAI2wD,EAAO3wD,EAAI,CAAC,EAEzCy5F,EAAO,MAAME,CAAK,CACnB,CACDF,EAAO,MAAK,EACZ,MAAMjiE,EAAM,MAAM,IAAI,SAAS2yB,EAAG,QAAQ,EAAE,cACtCpqD,EAAQ,IAAI,WAAWy3B,CAAG,EAChC,OAAOS,GAAal4B,CAAK,CAC1B,CACD,aAAa,oBAAoB65F,EAAe,CAC9C,GAAI,CACF,MAAM75F,EAAQm4B,GAAe0hE,CAAa,EACpC,CACJ,SAAAC,EACA,SAAAC,CACR,EAAU,IAAI,oBAAoB,aAAa,EACnCL,EAASK,EAAS,YACxB,MAAML,EAAO,MACbA,EAAO,MAAM15F,CAAK,EAAE,KAAK,SAAY,CACnC,MAAM05F,EAAO,MACb,MAAMA,EAAO,OACrB,CAAO,EAAE,MAAM,IAAM,EAAE,EACjB,IAAIn8F,EAAO,KACPihD,EAAS,EACb,gBAAiBp8B,KAAS03E,EACxBv8F,MAAS,IAAI,WAAW,IAAI,YAAY6kB,EAAM,OAAQ,EAAG,CAAC,EAAE,CAAC,CAAC,GAC9D7kB,EAAK,IAAI6kB,EAAOo8B,CAAM,EACtBA,GAAUp8B,EAAM,OAElB,MAAM68D,EAAS,IAAI,YAAY1hF,EAAK,OAAQ,EAAGA,EAAK,QAAU,CAAC,EACzDy0B,EAAUitD,EAAO,CAAC,EACxB,GAAIjtD,IAAY,EACd,MAAM,IAAI,MAAM,oBAAoBA,CAAO,EAAE,EAE/C,MAAM7vB,EAAQ88E,EAAO,CAAC,EAChBt9E,EAASs9E,EAAO,CAAC,EACjByZ,EAAczZ,EAAO,CAAC,IAAM,EAC5BmC,EAAYnC,EAAO,CAAC,EACpB+a,EAAmB/a,EAAO,CAAC,EAC3Bua,EAAava,EAAO,CAAC,EACrB6L,EAAW,GACXmP,GAAenD,GAAqBC,GAA2BiD,GAAoB,YAAY,kBACrG,IAAIJ,EACJ,OAAQJ,EAAU,CAChB,KAAK,UAAU,kBACbI,EAAQ,IAAI,UAAUr8F,EAAK,OAAQ08F,CAAW,EAC9C,MACF,KAAK,WAAW,kBACdL,EAAQ,IAAI,WAAWr8F,EAAK,OAAQ08F,CAAW,EAC/C,MACF,KAAK,WAAW,kBACdL,EAAQ,IAAI,WAAWr8F,EAAK,OAAQ08F,CAAW,EAC/C,KACH,CACDz7C,EAAS,EACT,QAASv+C,EAAI,EAAGA,EAAI+5F,EAAkB/5F,IAAK,CACzC,MAAMiI,EAAM+2E,EAAO8X,GAA2B92F,EAAI62F,EAAkB,EAC9DlmC,EAAS,IAAI,aAAa1oD,EAAM,CAAC,EACvC4iF,EAAS,KAAKl6B,CAAM,EACpB,QAASlL,EAAI,EAAGA,EAAIqxC,GAA2B,EAAGrxC,IAChDkL,EAAOlL,CAAC,EAAIu5B,EAAO8X,GAA2B92F,EAAI62F,GAAqBpxC,EAAI,CAAC,EAE9E,QAASA,EAAI,EAAGA,EAAIx9C,EAAKw9C,IACvBkL,EAAOlL,EAAI,CAAC,EAAIkL,EAAOlL,CAAC,EAAIk0C,EAAMp7C,GAAQ,CAE7C,CACD,MAAO,CACL,YAAAk6C,EACA,UAAAtX,EACA,SAAA0J,EACA,MAAA3oF,EACA,OAAAR,CACR,CACK,OAAQ,EAAG,CACV,OAAAixB,GAAK,wBAAwB,CAAC,EAAE,EACzB,IACR,CACF,CACH,CA7mBS4lE,GAAA,YAMA0B,GAAA,YAAAC,GAAkB,SAACC,EAAIvpC,EAAI,EAAGnL,EAAG,CAGtC,OAFA,GAAK00C,EACL10C,GAAKmL,EACD,IAAM,EACDnL,EAAI,EAAI,EAAI,EAEjB,IAAM,EACDA,EAAI,EAEN,EAAIA,CACZ,EACM20C,GAAA,YACAC,GAAA,YAAAC,GAAiB,SAAC9iE,EAAKt1B,EAAOi4F,EAAIvpC,EAAI5wD,EAAGylD,EAAGlH,EAAQ,CACzD,MAAMlvC,EAAKqnB,EAAA,KAAKujE,GAAAC,IAAL,UAAwBC,EAAIvpC,EAAI5wD,EAAGylD,GAC9C,QAAS15B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMwuE,GAAM,CAACxuE,EAAI1c,EAAKkvC,EAAS,IAAM,EAC/Bi8C,EAASlgE,EAAA,KAAK8/D,IAAmB,EAAIG,CAAE,EACvCE,EAASngE,EAAA,KAAK8/D,IAAmB,EAAIG,EAAK,CAAC,EACjD,GAAI/iE,GAAK2iE,EAAKK,GAAUt4F,GAAS0uD,EAAK6pC,EAAO,IAAM,EACjD,OAAOF,CAEV,CACD,MAAO,EACR,EACMG,GAAA,YAAAC,GAAwB,SAACnjE,EAAKt1B,EAAOi4F,EAAIvpC,EAAI5wD,EAAGylD,EAAGlH,EAAQ,CAChE,MAAMlvC,EAAKqnB,EAAA,KAAKujE,GAAAC,IAAL,UAAwBC,EAAIvpC,EAAI5wD,EAAGylD,GAC9C,QAAS15B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMwuE,GAAMxuE,EAAI1c,EAAKkvC,EAAS,IAAM,EAC9Bi8C,EAASlgE,EAAA,KAAK8/D,IAAmB,EAAIG,CAAE,EACvCE,EAASngE,EAAA,KAAK8/D,IAAmB,EAAIG,EAAK,CAAC,EACjD,GAAI/iE,GAAK2iE,EAAKK,GAAUt4F,GAAS0uD,EAAK6pC,EAAO,IAAM,EACjD,OAAOF,CAEV,CACD,MAAO,EACR,EACMtC,GAAA,YAAAC,GAAa,SAAC1gE,EAAKt1B,EAAOR,EAAQJ,EAAW,CAClD,MAAMmrB,EAAI+K,EAAI,OACRwT,EAAQ,IAAI,WAAWve,CAAC,EAC9B,QAASzsB,EAAI,EAAGA,EAAIysB,EAAGzsB,IACrBgrC,EAAMhrC,CAAC,EAAIw3B,EAAIx3B,CAAC,GAAKsB,EAAY,EAAI,EAEvC,QAAStB,EAAI,EAAGA,EAAI0B,EAAS,EAAG1B,IAC9BgrC,EAAMhrC,EAAIkC,CAAK,EAAI8oC,EAAMhrC,EAAIkC,EAAQA,EAAQ,CAAC,EAAI,EAEpD,QAASlC,EAAI,EAAGA,EAAIkC,EAAOlC,IACzBgrC,EAAMhrC,CAAC,EAAIgrC,EAAM9oC,EAAQR,EAAS,EAAI1B,CAAC,EAAI,EAE7C,IAAI46F,EAAM,EACNC,EACJ,MAAMC,EAAW,GACjB,QAAS96F,EAAI,EAAGA,EAAI0B,EAAS,EAAG1B,IAAK,CACnC66F,EAAO,EACP,QAASp1C,EAAI,EAAGA,EAAIvjD,EAAQ,EAAGujD,IAAK,CAClC,MAAMs1C,EAAK/6F,EAAIkC,EAAQujD,EACjBu1C,EAAMhwD,EAAM+vD,CAAE,EACpB,GAAIC,IAAQ,EACV,SAEF,IAAIC,EAAKj7F,EACLk7F,EAAKz1C,EACT,GAAIu1C,IAAQ,GAAKhwD,EAAM+vD,EAAK,CAAC,IAAM,EACjCH,GAAO,EACPM,GAAM,UACGF,GAAO,GAAKhwD,EAAM+vD,EAAK,CAAC,IAAM,EACvCH,GAAO,EACPM,GAAM,EACFF,EAAM,IACRH,EAAOG,OAEJ,CACDA,IAAQ,IACVH,EAAO,KAAK,IAAIG,CAAG,GAErB,QACD,CACD,MAAMrqC,EAAS,CAAClL,EAAGzlD,CAAC,EACdm7F,EAASD,IAAOz1C,EAAI,EACpB21C,EAAU,CACd,OAAAD,EACA,OAAAxqC,EACA,GAAIiqC,EACJ,OAAQ,CAClB,EACQE,EAAS,KAAKM,CAAO,EACrB,IAAIC,EACJ,UAAW/tF,MAAKwtF,EACd,GAAIxtF,GAAE,KAAOutF,EAAM,CACjBQ,EAAW/tF,GACX,KACD,CAEE+tF,EAEMA,EAAS,OAClBD,EAAQ,OAASD,EAASE,EAAS,OAASR,EAE5CO,EAAQ,OAASD,EAASN,EAAOQ,EAAS,OAJ1CD,EAAQ,OAASD,EAASN,EAAO,EAMnC,MAAM9uE,EAAI2K,EAAA,KAAK2jE,GAAAC,IAAL,UAAuBtvD,EAAO9oC,EAAOlC,EAAGylD,EAAGw1C,EAAIC,EAAI,GAC7D,GAAInvE,IAAM,GAAI,CACZif,EAAM+vD,CAAE,EAAI,CAACH,EACT5vD,EAAM+vD,CAAE,IAAM,IAChBF,EAAO,KAAK,IAAI7vD,EAAM+vD,CAAE,CAAC,GAE3B,QACD,CACD,IAAIP,EAASlgE,EAAA,KAAK8/D,IAAmB,EAAIruE,CAAC,EACtC0uE,EAASngE,EAAA,KAAK8/D,IAAmB,EAAIruE,EAAI,CAAC,EAC9C,MAAMuvE,EAAKt7F,EAAIw6F,EACTe,GAAK91C,EAAIg1C,EACfQ,EAAKK,EACLJ,EAAKK,GACL,IAAIC,GAAKx7F,EACLy7F,GAAKh2C,EACT,OAAa,CACX,MAAM80C,GAAK7jE,EAAA,KAAKgkE,GAAAC,IAAL,UAA8B3vD,EAAO9oC,EAAOs5F,GAAIC,GAAIR,EAAIC,EAAI,GACvEV,EAASlgE,EAAA,KAAK8/D,IAAmB,EAAIG,EAAE,EACvCE,EAASngE,EAAA,KAAK8/D,IAAmB,EAAIG,GAAK,CAAC,EAC3C,MAAMmB,GAAKF,GAAKhB,EACVmB,EAAKF,GAAKhB,EAChB9pC,EAAO,KAAKgrC,EAAID,EAAE,EAClB,MAAME,EAAMJ,GAAKt5F,EAAQu5F,GAMzB,GALIzwD,EAAM4wD,EAAM,CAAC,IAAM,EACrB5wD,EAAM4wD,CAAG,EAAI,CAAChB,EACL5vD,EAAM4wD,CAAG,IAAM,IACxB5wD,EAAM4wD,CAAG,EAAIhB,GAEXc,KAAO17F,GAAK27F,IAAOl2C,GAAK+1C,KAAOF,GAAMG,KAAOF,GAAI,CAC9CvwD,EAAM+vD,CAAE,IAAM,IAChBF,EAAO,KAAK,IAAI7vD,EAAM+vD,CAAE,CAAC,GAE3B,KACZ,MACYE,EAAKO,GACLN,EAAKO,GACLD,GAAKE,GACLD,GAAKE,CAER,CACF,CACF,CACD,OAAOb,CACR,EACMe,GAAA,YAAAC,GAAqB,SAACnrC,EAAQx2B,EAAOC,EAAKivC,EAAQ,CACvD,GAAIjvC,EAAMD,GAAS,EAAG,CACpB,QAASn6B,EAAIm6B,EAAOn6B,EAAIo6B,EAAM,EAAGp6B,GAAK,EACpCqpE,EAAO,KAAK1Y,EAAO3wD,CAAC,EAAG2wD,EAAO3wD,EAAI,CAAC,CAAC,EAEtC,MACD,CACD,MAAM+7F,EAAKprC,EAAOx2B,CAAK,EACjB6hE,EAAKrrC,EAAOx2B,EAAQ,CAAC,EACrB8hE,EAAMtrC,EAAOv2B,EAAM,CAAC,EAAI2hE,EACxBG,EAAMvrC,EAAOv2B,EAAM,CAAC,EAAI4hE,EACxBG,EAAO,KAAK,MAAMF,EAAKC,CAAG,EAC1BE,EAAOH,EAAME,EACbE,EAAOH,EAAMC,EACbG,EAAKF,EAAOJ,EAAKK,EAAON,EACxBhoF,EAAImoF,EAAMD,EACVM,EAAO,EAAIJ,EACXK,EAAM,KAAK,KAAKzoF,CAAC,EACjB0oF,EAAS,KAAK,IAAID,CAAG,EACrBE,EAAS,KAAK,IAAIF,CAAG,EACrBG,EAAOJ,GAAQ,KAAK,IAAIE,CAAM,EAAI,KAAK,IAAIC,CAAM,GACjDE,EAAOL,GAAQ,EAAII,EAAOA,GAAQ,GAClCE,EAAa,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIH,EAASD,CAAM,EAAIG,CAAI,EAAG,KAAK,KAAK,KAAK,IAAIF,EAASD,CAAM,EAAIG,CAAI,CAAC,EACpH,IAAIE,EAAO,EACPvgB,EAAQpiD,EACZ,QAASn6B,EAAIm6B,EAAQ,EAAGn6B,EAAIo6B,EAAM,EAAGp6B,GAAK,EAAG,CAC3C,MAAMgN,GAAI,KAAK,IAAIsvF,EAAKF,EAAOzrC,EAAO3wD,EAAI,CAAC,EAAIq8F,EAAO1rC,EAAO3wD,CAAC,CAAC,EAC3DgN,GAAI8vF,IACNvgB,EAAQv8E,EACR88F,EAAO9vF,GAEV,CACG8vF,GAAQX,EAAOU,IAAe,GAChCnmE,EAAA,KAAKmlE,GAAAC,IAAL,UAA2BnrC,EAAQx2B,EAAOoiD,EAAQ,EAAGlT,GACrD3yC,EAAA,KAAKmlE,GAAAC,IAAL,UAA2BnrC,EAAQ4rB,EAAOniD,EAAKivC,IAE/CA,EAAO,KAAK0yB,EAAIC,CAAE,CAErB,EACMhD,GAAA,YAAAC,GAAe,SAACtoC,EAAQ,CAC7B,MAAM0Y,EAAS,GACTphE,EAAM0oD,EAAO,OACnB,OAAAj6B,EAAA,KAAKmlE,GAAAC,IAAL,UAA2BnrC,EAAQ,EAAG1oD,EAAKohE,GAC3CA,EAAO,KAAK1Y,EAAO1oD,EAAM,CAAC,EAAG0oD,EAAO1oD,EAAM,CAAC,CAAC,EACrCohE,EAAO,QAAU,EAAI,KAAOA,CACpC,EACMgvB,GAAA,YAAAC,GAAgB,SAAC9gE,EAAKt1B,EAAOR,EAAQq7F,EAAQC,EAAQC,EAAY,CACtE,MAAMC,EAAS,IAAI,aAAaD,GAAc,CAAC,EACzCE,EAAU,GAAKJ,GAAU,EACzBK,EAAWH,GAAc,EAC/B,QAASj9F,EAAI,EAAGA,EAAIi9F,EAAYj9F,IAAK,CACnC,MAAMurB,GAAKvrB,EAAIo9F,IAAa,EAC5B,QAAS33C,EAAI,EAAGA,EAAIw3C,EAAYx3C,IAC9By3C,EAAOl9F,EAAIi9F,EAAax3C,CAAC,EAAI,KAAK,KAAKl6B,GAAKk6B,EAAI23C,IAAa,GAAKD,CAAO,CAE5E,CACD,MAAME,EAAc,IAAI,aAAa,GAAG,EAClCC,EAAU,GAAKN,GAAU,EAC/B,QAASh9F,EAAI,EAAGA,EAAI,IAAKA,IACvBq9F,EAAYr9F,CAAC,EAAI,KAAK,IAAIA,GAAK,EAAIs9F,CAAO,EAE5C,MAAM7wE,EAAI+K,EAAI,OACRnqB,EAAM,IAAI,WAAWof,CAAC,EACtBkrE,EAAY,IAAI,YAAY,GAAG,EACrC,QAAS33F,EAAI,EAAGA,EAAI0B,EAAQ1B,IAC1B,QAASylD,EAAI,EAAGA,EAAIvjD,EAAOujD,IAAK,CAC9B,MAAMs1C,EAAK/6F,EAAIkC,EAAQujD,EACjB83C,EAAS/lE,EAAIujE,CAAE,EACrB,IAAIhqC,EAAM,EACNysC,EAAO,EACX,QAASzxE,EAAI,EAAGA,EAAIkxE,EAAYlxE,IAAK,CACnC,MAAMD,EAAI9rB,EAAI+rB,EAAIqxE,EAClB,GAAI,EAAAtxE,EAAI,GAAKA,GAAKpqB,GAGlB,QAAS2S,GAAI,EAAGA,GAAI4oF,EAAY5oF,KAAK,CACnC,MAAMkX,GAAIk6B,EAAIpxC,GAAI+oF,EAClB,GAAI7xE,GAAI,GAAKA,IAAKrpB,EAChB,SAEF,MAAMu7F,GAAYjmE,EAAI1L,EAAI5pB,EAAQqpB,EAAC,EAC7BD,GAAI4xE,EAAOnxE,EAAIkxE,EAAa5oF,EAAC,EAAIgpF,EAAY,KAAK,IAAII,GAAYF,CAAM,CAAC,EAC/ExsC,GAAO0sC,GAAYnyE,GACnBkyE,GAAQlyE,EACT,CACF,CACD,MAAM0vE,EAAM3tF,EAAI0tF,CAAE,EAAI,KAAK,MAAMhqC,EAAMysC,CAAI,EAC3C7F,EAAUqD,CAAG,GACd,CAEH,MAAO,CAAC3tF,EAAKsqF,CAAS,CACvB,EACMC,GAAA,YAAAC,GAAa,SAACrgE,EAAK,CACxB,MAAMmgE,EAAY,IAAI,YAAY,GAAG,EACrC,UAAW9rE,KAAK2L,EACdmgE,EAAU9rE,CAAC,IAEb,OAAO8rE,CACR,EACMF,GAAA,YAAAC,GAAQ,SAAClgE,EAAK,CACnB,MAAM/K,EAAI+K,EAAI,OACRnqB,EAAM,IAAI,kBAAkBof,GAAK,CAAC,EACxC,IAAIlJ,EAAM,KACNzU,EAAM,IACV,QAAS9O,EAAI,EAAG05B,EAAKrsB,EAAI,OAAQrN,EAAI05B,EAAI15B,IAAK,CAE5C,GADUw3B,GAAKx3B,GAAK,GAAK,CAAC,IAChB,EAAG,CACXujB,EAAMlW,EAAIrN,CAAC,EAAI,IACf,QACD,CACD,MAAMg7F,EAAM3tF,EAAIrN,CAAC,EAAIw3B,EAAIx3B,GAAK,CAAC,EAC3Bg7F,EAAMz3E,IACRA,EAAMy3E,GAEJA,EAAMlsF,IACRA,EAAMksF,EAET,CACD,MAAMv6F,EAAQ,KAAO8iB,EAAMzU,GAC3B,QAAS9O,EAAI,EAAGA,EAAIysB,EAAGzsB,IACrBqN,EAAIrN,CAAC,GAAKqN,EAAIrN,CAAC,EAAI8O,GAAOrO,EAE5B,OAAO4M,CACR,EACMyqF,GAAA,YAAAC,GAAe,SAACJ,EAAW,CAChC,IAAI33F,EACAwrB,EAAI,KACJe,EAAI,KACR,MAAMzd,EAAM6oF,EAAU,UAAUtsE,GAAKA,IAAM,CAAC,EAC5C,IAAIzc,EAAME,EACN4uF,EAAO5uF,EACX,IAAK9O,EAAI8O,EAAK9O,EAAI,IAAKA,IAAK,CAC1B,MAAMqrB,EAAIssE,EAAU33F,CAAC,EACjBqrB,EAAIG,IACFxrB,EAAI4O,EAAM2d,IACZA,EAAIvsB,EAAI4O,EACR8uF,EAAO19F,EAAI,GAEbwrB,EAAIH,EACJzc,EAAM5O,EAET,CACD,IAAKA,EAAI09F,EAAO,EAAG19F,GAAK,GAClB,EAAA23F,EAAU33F,CAAC,EAAI23F,EAAU33F,EAAI,CAAC,GADTA,IACzB,CAIF,OAAOA,CACR,EACMm4F,GAAA,YAAAC,GAAc,SAAC13D,EAAQ,CAC5B,MAAMi9D,EAAiBj9D,EACjB,CACJ,MAAAx+B,EACA,OAAAR,CACD,EAAGg/B,EACE,CACJ,OAAAlE,CACN,EAAQlC,EAAA,KAAKi+D,IACT,IAAI7/C,EAAWx2C,EACXy2C,EAAYj3C,EAChB,GAAIQ,EAAQs6B,GAAU96B,EAAS86B,EAAQ,CACrC,IAAIohE,EAAY17F,EACZ27F,EAAan8F,EACbsvD,EAAQ,KAAK,KAAK,KAAK,IAAI9uD,EAAOR,CAAM,EAAI86B,CAAM,EACtD,MAAMshE,EAAS,KAAK,MAAM9sC,CAAK,EAC/BA,EAAQA,IAAU8sC,EAASA,EAAS,EAAIA,EACxC,QAAS99F,EAAI,EAAGA,EAAIgxD,EAAOhxD,IAAK,CAC9B04C,EAAWklD,EACXjlD,EAAYklD,EACRnlD,EAAWlc,IACbkc,EAAW,KAAK,KAAKA,EAAW,CAAC,GAE/BC,EAAYnc,IACdmc,EAAY,KAAK,KAAKA,EAAY,CAAC,GAErC,MAAMlY,EAAY,IAAI,gBAAgBiY,EAAUC,CAAS,EAC7ClY,EAAU,WAAW,IAAI,EACjC,UAAUC,EAAQ,EAAG,EAAGk9D,EAAWC,EAAY,EAAG,EAAGnlD,EAAUC,CAAS,EAC5EilD,EAAYllD,EACZmlD,EAAallD,EACTjY,IAAWi9D,GACbj9D,EAAO,MAAK,EAEdA,EAASD,EAAU,uBACpB,CACD,MAAMhgC,EAAQ,KAAK,IAAI+7B,EAASkc,EAAUlc,EAASmc,CAAS,EAC5DD,EAAW,KAAK,MAAMA,EAAWj4C,CAAK,EACtCk4C,EAAY,KAAK,MAAMA,EAAYl4C,CAAK,CACzC,CAED,MAAMG,EADY,IAAI,gBAAgB83C,EAAUC,CAAS,EACnC,WAAW,KAAM,CACrC,mBAAoB,EAC1B,CAAK,EACD/3C,EAAI,OAAS,eACbA,EAAI,UAAU8/B,EAAQ,EAAG,EAAGA,EAAO,MAAOA,EAAO,OAAQ,EAAG,EAAGgY,EAAUC,CAAS,EAClF,MAAMolD,EAAYn9F,EAAI,aAAa,EAAG,EAAG83C,EAAUC,CAAS,EAAE,KAE9D,MAAO,CADUjiB,EAAA,KAAK+gE,GAAAC,IAAL,UAAcqG,GACbrlD,EAAUC,CAAS,CACtC,EAtVDthB,EAPI5G,GAOGwpE,IAYP5iE,EAnBI5G,GAmBG4pE,IAYPhjE,EA/BI5G,GA+BGiqE,IAYPrjE,EA3CI5G,GA2CGwnE,IA4GP5gE,EAvJI5G,GAuJGorE,IAuCPxkE,EA9LI5G,GA8LGuoE,IAOP3hE,EArMI5G,GAqMG4nE,IA8CPhhE,EAnPI5G,GAmPGmnE,IAOPvgE,EA1PI5G,GA0PGgnE,IAyBPpgE,EAnRI5G,GAmRGqnE,IAyBPzgE,EA5SI5G,GA4SG0nE,IA3SP9gE,EADI5G,GACG8nE,GAAc,CACnB,OAAQ,IACR,aAAc,IACd,OAAQ,GACR,WAAY,EAChB,GAYElhE,EAlBI5G,GAkBG2pE,GAAqB,IAAI,WAAW,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,CAAC,GAsmBnG,MAAM4D,WAAyBvN,EAAe,CAC5C,aAAc,CACZ,QACA,MAAM,iBAAiB,CACrB,KAAM,aACN,eAAgB,CACtB,CAAK,CACF,CACD,OAAQ,CACN,MAAMrzC,EAAQ,IAAI4gD,GAClB,OAAA5gD,EAAM,UAAU,IAAI,EACbA,CACR,CACH,CACA,MAAM6gD,WAA8B3H,EAAkB,CACpD,YAAYC,EAAkB,CAC5B,MAAMA,CAAgB,EACtB,MAAM,iBAAiB,CACrB,OAAQ,aACR,eAAgB,CACtB,CAAK,CACF,CACD,OAAQ,CACN,MAAMn5C,EAAQ,IAAI6gD,GAAsB,KAAK,eAAe,EAC5D,OAAA7gD,EAAM,UAAU,IAAI,EACbA,CACR,CACH,iBACA,MAAM8gD,GAAN,MAAMA,WAAwBxK,EAAc,CAQ1C,YAAY/tF,EAAQ,CAClB,MAAM,CACJ,GAAGA,EACH,gBAAiB,GACjB,KAAM,iBACZ,CAAK,EAZH0xB,EAAA,KAAA8mE,GAAe,IACf9mE,EAAA,KAAA+mE,GAAe,MACf/mE,EAAA,KAAAgnE,GAAiB,MACjBhnE,EAAA,KAAAinE,GAAiB,MAUf,KAAK,qBAAuB,GAC5B9jE,EAAA,KAAK6jE,GAAiB14F,EAAO,eAAiB,MAC9C60B,EAAA,KAAK4jE,GAAe,MACpB,KAAK,cAAgB,+BACtB,CACD,OAAO,WAAW9vD,EAAMtP,EAAW,CACjC6b,GAAiB,WAAWvM,EAAMtP,CAAS,EAC3C,KAAK,uBAAyB,IAAIg/D,GAClC,KAAK,8BAAgC,IAAIC,GAAsBj/D,EAAU,cAAc,CACxF,CACD,OAAO,yBAAyBnvB,EAAS,CACvC,MAAMutC,EAAQ,KAAK,uBAAuB,MAAK,EAC/C,OAAAA,EAAM,iBAAiBvtC,CAAO,EACvButC,CACR,CACD,WAAW,yBAA0B,CACnC,MAAO,EACR,CACD,WAAW,UAAW,CACpB,OAAOvrB,GAAO,KAAM,WAAY,IAAI,GAAK,CAC1C,CACD,WAAW,UAAW,CACpB,MAAO,EACR,CACD,IAAI,oBAAqB,CACvB,MAAO,CACL,KAAM,YACN,eAAgB,CAAC,CAACyI,EAAA,KAAK8jE,GAC7B,CACG,CACD,OAAO,0BAA0B9gG,EAAM,CACrC,MAAMihG,EAAsBjhG,EAAK,IAAI,gBAAgB,EACrD,MAAO,CACL,WAAYihG,EAAoB,IAAI,EAAI,GAAK,EAC7C,aAAcA,EAAoB,IAAI,EAAK,GAAK,CACtD,CACG,CACD,IAAI,aAAc,CAChB,MAAO,EACR,CACD,iBAAkB,CACZ,KAAK,UAAY,MAGrB,MAAM,gBAAe,CACtB,CACD,QAAS,CACP,GAAI,KAAK,IACP,OAAO,KAAK,IAEd,IAAIjpD,EAAOC,EACX,KAAM,CACJ,QAAAipD,CACD,EAAG,KAOJ,GANIA,IACF,KAAK,QAAU,GACflpD,EAAQ,KAAK,EACbC,EAAQ,KAAK,GAEf,MAAM,OAAM,EACR,KAAK,UAAY,KACnB,GAAIjb,EAAA,KAAK+jE,IAAgB,CACvB,KAAM,CACJ,MAAAhf,EACA,WAAAmZ,EACA,YAAAC,EACA,YAAAj6D,EACA,KAAAigE,EACA,aAAAC,CACV,EAAYpkE,EAAA,KAAK+jE,IACH,CACJ,QAAS,CACP,UAAAriE,EACA,WAAAC,CACD,EACD,SAAAvD,CACV,EAAY,KAAK,OAAO,SACVqvD,EAAUt3D,GAAmB,kBAAkB,CACnD,MAAA4uD,EACA,UAAArjD,EACA,WAAAC,EACA,SAAAvD,EACA,YAAawlE,GAAgB,cAC7B,WAAA1F,EACA,YAAAC,CACV,CAAS,EACD,KAAK,aAAa1Q,EAAS2W,EAAclgE,EAAaigE,CAAI,CAClE,MACQ,KAAK,IAAI,OAAS,GAClB,KAAK,WAAW,aAAa,IAAI,EAGrC,OAAID,IACF,KAAK,QAAU,GACf,KAAK,gBAAgBlpD,EAAOC,CAAK,GAE5B,KAAK,GACb,CACD,QAAQkpD,EAAM,CACZjkE,EAAA,KAAK8jE,GAAiBG,GACtB,KAAK,eAAc,CACpB,CACD,SAAU,CACR,OAAOnkE,EAAA,KAAKgkE,GACb,CACD,IAAI,aAAc,CAChB,OAAOhkE,EAAA,KAAK8jE,GACb,CACD,IAAI,YAAY5/D,EAAa,CAC3BhE,EAAA,KAAK4jE,GAAe5/D,GACpB,MAAM,eAAc,EAAG,KAAKkwD,GAAW,CACrCA,GAAA,MAAAA,EAAS,0BAA0BlwD,EACzC,CAAK,CACF,CACD,qBAAsB,CACpB,KAAM,CACJ,UAAAs6D,EACA,YAAAL,EACA,UAAAtX,EACA,MAAAj/E,EACA,OAAAR,CACN,EAAQ44B,EAAA,KAAK+jE,IACH7hE,EAAS,KAAK,IAAIt6B,EAAOR,CAAM,EAC/Bi9F,EAAcluE,GAAmB,kBAAkB,CACvD,MAAO,CACL,OAAQqoE,EAAU,IAAInoC,IAAW,CAC/B,OAAAA,CACV,EAAU,EACF,UAAAwwB,EACA,MAAAj/E,EACA,OAAAR,CACD,EACD,UAAW86B,EACX,WAAYA,EACZ,SAAU,EACV,YAAa,EACb,WAAY,GACZ,YAAAi8D,CACN,CAAK,EACD,MAAO,CACL,YAAAA,EACA,QAASkG,EAAY,OAC3B,CACG,CACD,MAAM,gBAAiB,CACrB,MAAMjQ,EAAU,MAAM,MAAM,iBAC5B,OAAKA,GAGD,KAAK,WAAW,kBAAoBp0D,EAAA,KAAK8jE,MAAiB,OAC5D,MAAM1P,EAAQ,uBAAuB,KAAK,WAAW,iBAAkBp0D,EAAA,KAAKgkE,IAAgBhkE,EAAA,KAAK8jE,GAAY,EAC7G1P,EAAQ,KAAI,GAEPA,GANE,IAOV,CACD,aAAapxF,EAAMohG,EAAclgE,EAAaigE,EAAM,CAClD,KAAM,CACJ,EAAGnyD,EACH,EAAGC,CACJ,EAAG,KACE,CACJ,QAAAw7C,CACN,EAAQvtD,EAAA,KAAK6jE,GAAiB/gG,GAC1Bk9B,EAAA,KAAK2jE,GAAepW,aAAmB6O,IACvCp8D,EAAA,KAAK4jE,GAAe5/D,GACpB,KAAK,IAAI,aAAa,mBAAoBA,CAAW,EACrD,IAAI40D,EACA94D,EAAA,KAAK6jE,IACP/K,EAAiB8K,GAAgB,4BAEjC9K,EAAiB8K,GAAgB,8BAA8B,QAC/D9K,EAAe,iBAAiB,CAC9B,eAAgBrL,EAAQ,SAChC,CAAO,GAEH,KAAK,aAAa,CAChB,aAAcA,EACd,eAAAqL,CACN,CAAK,EACD,KAAM,CAACzmD,EAAaC,CAAY,EAAI,KAAK,iBACnC,EAAG3Q,CAAU,EAAI,KAAK,eAC5B,IAAI0c,EAAY+lD,EAAeziE,EAC/B0c,EAAYA,GAAa,EAAI,GAAMA,EACnC,KAAK,OAASA,EAAY,KAAK,OAC3B,KAAK,OAAS,IAChBA,GAAa,GAAM,KAAK,MACxB,KAAK,MAAQ,IAEf,KAAK,OAASA,EACd,KAAK,QAAQhM,EAAc,KAAK,MAAOC,EAAe,KAAK,MAAM,EACjE,KAAK,EAAIN,EACT,KAAK,EAAIC,EACT,KAAK,OAAM,EACX,KAAK,WAAU,EACf,KAAK,gBAAe,EACpB,KAAK,OAAM,EACX,KAAK,WAAW,uBAAuB,IAAI,EAC3C,KAAK,QAAQkyD,CAAI,EACjB,KAAK,iBAAiB,CACpB,OAAQ,2BACR,KAAM,CACJ,aAAc,CAAC,CAACA,EAChB,eAAgB,CAAC,CAACjgE,CACnB,CACP,CAAK,EACD,KAAK,IAAI,OAAS,EACnB,CACD,aAAakC,EAAQ,CACnB,KAAM,CACJ,QAAS,CACP,UAAA1E,EACA,WAAAC,CACD,EACD,SAAAvD,CACN,EAAQ,KAAK,OAAO,SAChB,OAAOjI,GAAmB,QAAQiQ,EAAQ1E,EAAWC,EAAYvD,EAAUwlE,GAAgB,aAAa,CACzG,CACD,YAAY7yF,EAAMuzF,EAAU,CAC1B,KAAM,CACJ,QAAS,CACP,UAAA5iE,EACA,WAAAC,CACD,EACD,SAAAvD,CACN,EAAQ,KAAK,OAAO,SAChB,OAAOjI,GAAmB,wBAAwBplB,EAAMuzF,EAAU5iE,EAAWC,EAAYvD,EAAUwlE,GAAgB,aAAa,CACjI,CACD,kBAAkBxF,EAAQ,CACxB,KAAM,CACJ,QAAS,CACP,UAAA18D,EACA,WAAAC,CACD,EACD,SAAAvD,CACN,EAAQ,KAAK,OAAO,SAChB,OAAOjI,GAAmB,kBAAkB,CAC1C,MAAOioE,EACP,UAAA18D,EACA,WAAAC,EACA,SAAAvD,EACA,YAAawlE,GAAgB,cAC7B,WAAY,GACZ,YAAa,EACnB,CAAK,CACF,CACD,qBAAqB,CACnB,YAAAzF,EACA,UAAAtX,CACJ,EAAK,CACGsX,EACF,KAAK,gBAAkByF,GAAgB,4BAEvC,KAAK,gBAAkBA,GAAgB,8BAA8B,MAAK,EAC1E,KAAK,gBAAgB,iBAAiB,CACpC,eAAgB/c,CACxB,CAAO,EAEJ,CACD,UAAUryC,EAAe,GAAO,CAC9B,GAAI,KAAK,UACP,OAAO,KAET,KAAM,CACJ,MAAAuwC,EACA,OAAA1uB,EACA,KAAAh7B,CACN,EAAQ,KAAK,cAAcmZ,CAAY,EAC7B,CACJ,gBAAiB,CACf,eAAgBqyC,CACjB,CACF,EAAG,KACE/2C,EAAa,CACjB,eAAgBlb,GAAqB,UACrC,YAAa,GACb,YAAaoL,EAAA,KAAK6jE,IAClB,MAAO,CAAC,EAAG,EAAG,CAAC,EACf,UAAW7jE,EAAA,KAAK6jE,IAAe,EAAIhd,EACnC,UAAW,KAAK,UAChB,KAAAxrD,EACA,SAAU,KAAK,SACf,mBAAoB,KAAK,mBAC/B,EACI,OAAImZ,GACF1E,EAAW,MAAQ,CACjB,MAAAi1C,EACA,OAAA1uB,CACR,EACMvmB,EAAW,KAAO9P,EAAA,KAAKgkE,IACvBl0D,EAAW,OAAS,IAEpBA,EAAW,MAAQi1C,EAEjB/kD,EAAA,KAAK8jE,MACPh0D,EAAW,kBAAoB,CAC7B,KAAM,SACN,IAAK9P,EAAA,KAAK8jE,GAClB,GAEWh0D,CACR,CACD,OAAO,gBAAgByK,EAAOC,EAAO9Y,EAAWC,EAAY4pD,EAAavoF,EAAM,CAC7E,OAAIA,EAAK,YACAs5F,GAAmB,YAAY/hD,EAAOC,EAAO9Y,EAAWC,EAAY4pD,EAAavoF,CAAI,EAEvF02F,GAAe,YAAYn/C,EAAOC,EAAO9Y,EAAWC,EAAY4pD,EAAavoF,CAAI,CACzF,CACD,aAAa,YAAYA,EAAM8hC,EAAQJ,EAAW,OAChD,MAAMlC,EAAS,MAAM,MAAM,YAAYx/B,EAAM8hC,EAAQJ,CAAS,EAC9D,OAAAxE,EAAAsC,EAAOqhE,GAAe7gG,EAAK,aAC3Bk9B,EAAAsC,EAAOshE,KAAe3pE,EAAAn3B,EAAK,oBAAL,YAAAm3B,EAAwB,MAAO,IACrD+F,EAAAsC,EAAOwhE,GAAiBhhG,EAAK,MACtBw/B,CACR,CACH,EAvUEqhE,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAz8F,GALIq8F,GAKG,QAAQ,aACfr8F,GANIq8F,GAMG,cAAchvE,GAAqB,WAC1CrtB,GAPIq8F,GAOG,yBAAyB,MAPlC,IAAMW,GAANX,wFA+UA,MAAMY,WAAoBjkD,EAAiB,CAczC,YAAYl1C,EAAQ,CAClB,MAAM,CACJ,GAAGA,EACH,KAAM,aACZ,CAAK,EAmCH0xB,EAAA,KAAA0nE,IAeA1nE,EAAA,KAAA2nE,IA0EA3nE,EAAA,KAAA4nE,IAuJA5nE,EAAA,KAAA6nE,IAmIA7nE,EAAA,KAAA8nE,IAwBA9nE,EAAA,KAAA+nE,IAoBA/nE,EAAA,KAAAgoE,IAgLAhoE,EAAA,KAAA+rD,IAnoBA/rD,EAAA,KAAAioE,GAAU,MACVjoE,EAAA,KAAAkoE,GAAY,MACZloE,EAAA,KAAAmoE,GAAiB,MACjBnoE,EAAA,KAAAooE,GAAa,MACbpoE,EAAA,KAAAqoE,GAAc,MACdroE,EAAA,KAAAsoE,GAAkB,IAClBtoE,EAAA,KAAAuoE,GAAU,MACVvoE,EAAA,KAAAwoE,GAAiB,IACjBxoE,EAAA,KAAAyoE,GAAmB,MACnBzoE,EAAA,KAAA0oE,GAAS,IACT1oE,EAAA,KAAA2oE,GAA2B,IAQzBxlE,EAAA,KAAKilE,GAAa95F,EAAO,WACzB60B,EAAA,KAAKklE,GAAc/5F,EAAO,YAC1B,KAAK,cAAgB,2BACtB,CACD,OAAO,WAAW2oC,EAAMtP,EAAW,CACjC6b,GAAiB,WAAWvM,EAAMtP,CAAS,CAC5C,CACD,OAAO,yBAAyBoW,EAAM,CACpC,OAAO1kB,GAAwB,SAAS0kB,CAAI,CAC7C,CACD,OAAO,MAAMjhC,EAAMirB,EAAQ,CACzBA,EAAO,YAAYlQ,GAAqB,MAAO,CAC7C,WAAY/a,EAAK,UAAW,CAClC,CAAK,CACF,CACD,eAAgB,CACV,KAAK,WAAW,oBAClB,KAAK,IAAI,OAAS,IAEpB,MAAM,cAAa,CACpB,CACD,IAAI,oBAAqB,OACvB,MAAO,CACL,KAAM,QACN,WAAY,CAAC,GAACsgB,EAAA,KAAK,cAAL,MAAAA,EAAkB,QACtC,CACG,CACD,OAAO,0BAA0Bn3B,EAAM,CACrC,MAAM2iG,EAAkB3iG,EAAK,IAAI,YAAY,EAC7C,MAAO,CACL,WAAY2iG,EAAgB,IAAI,EAAI,GAAK,EACzC,aAAcA,EAAgB,IAAI,EAAK,GAAK,CAClD,CACG,CAyCD,MAAM,eAAezuB,EAAY,KAAM0uB,EAAoB,GAAM,CAC/D,GAAI,KAAK,iBACP,OAAO,KAET,KAAM,CACJ,UAAA78D,CACN,EAAQ,KAAK,WACT,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,QAAQ,EAE1B,GAAI,CAAE,MAAMA,EAAU,aAAa,SAAS,EAC1C,MAAM,IAAI,MAAM,gCAAgC,EAElD,KAAM,CACJ,KAAA/lC,EACA,MAAA4E,EACA,OAAAR,CACN,EAAQ8vE,GAAa,KAAK,WAAW,KAAM,KAAM,EAAI,EAAE,UAC7Cn0E,EAAW,MAAMgmC,EAAU,MAAM,CACrC,KAAM,UACN,QAAS,CACP,KAAA/lC,EACA,MAAA4E,EACA,OAAAR,EACA,SAAUpE,EAAK,QAAU4E,EAAQR,EAClC,CACP,CAAK,EACD,GAAI,CAACrE,EACH,MAAM,IAAI,MAAM,kCAAkC,EAEpD,GAAIA,EAAS,MACX,MAAM,IAAI,MAAM,4BAA4B,EAE9C,GAAIA,EAAS,OACX,OAAO,KAET,GAAI,CAACA,EAAS,OACZ,MAAM,IAAI,MAAM,wCAAwC,EAE1D,MAAM6gC,EAAU7gC,EAAS,OACzB,aAAM,KAAK,kBAAkB6gC,CAAO,EAChCgiE,GAAqB,CAAC,KAAK,mBAC7B,KAAK,YAAc,CACjB,IAAKhiE,EACL,WAAY,EACpB,GAEWA,CACR,CAqDD,QAAS,OACH5D,EAAA,KAAKilE,MACP/kE,EAAA,KAAK8kE,GAAU,MACf,KAAK,WAAW,aAAa,SAAShlE,EAAA,KAAKilE,GAAS,GACpD9qE,EAAA6F,EAAA,KAAKslE,MAAL,MAAAnrE,EAAc,SACd+F,EAAA,KAAKolE,GAAU,MACXtlE,EAAA,KAAKwlE,MACP,aAAaxlE,EAAA,KAAKwlE,GAAgB,EAClCtlE,EAAA,KAAKslE,GAAmB,QAG5B,MAAM,OAAM,CACb,CACD,SAAU,CACR,GAAI,CAAC,KAAK,OAAQ,CACZxlE,EAAA,KAAKilE,KACP7oE,EAAA,KAAKuoE,GAAAkB,IAAL,WAEF,MACD,CACD,MAAM,QAAO,EACT,KAAK,MAAQ,OAGb7lE,EAAA,KAAKilE,KAAajlE,EAAA,KAAKslE,MAAY,MACrClpE,EAAA,KAAKuoE,GAAAkB,IAAL,WAEG,KAAK,iBACR,KAAK,OAAO,IAAI,IAAI,EAEvB,CACD,UAAUzpD,EAAO,CACf,KAAK,aAAe,GAChBA,GACF,KAAK,IAAI,OAEZ,CACD,SAAU,CACR,MAAO,EAAEpc,EAAA,KAAKklE,KAAkBllE,EAAA,KAAKglE,KAAWhlE,EAAA,KAAKmlE,KAAcnlE,EAAA,KAAKolE,KAAeplE,EAAA,KAAKilE,KAAajlE,EAAA,KAAKulE,IAC/G,CACD,IAAI,aAAc,CAChB,MAAO,EACR,CACD,QAAS,CACP,GAAI,KAAK,IACP,OAAO,KAAK,IAEd,IAAIvqD,EAAOC,EACX,OAAI,KAAK,UACPD,EAAQ,KAAK,EACbC,EAAQ,KAAK,GAEf,MAAM,OAAM,EACZ,KAAK,IAAI,OAAS,GAClB,KAAK,iBAAgB,EAChBjb,EAAA,KAAKulE,MACJvlE,EAAA,KAAKglE,IACP5oE,EAAA,KAAKwoE,GAAAkB,IAAL,WAEA1pE,EAAA,KAAKuoE,GAAAkB,IAAL,YAGA,KAAK,SACP,KAAK,gBAAgB7qD,EAAOC,CAAK,EAEnC,KAAK,WAAW,iBAAiB,IAAI,EAC9B,KAAK,GACb,CACD,UAAU9J,EAAqBnrC,EAAQ,CACrC,KAAM,CACJ,GAAI+/F,EACJ,OAAA3/D,CACN,EAAQ,KAAK,WAAW,aAAa,cAAc+K,EAAqBnrC,CAAM,EAC1EA,EAAO,OAAM,EACT+/F,GAAY,KAAK,WAAW,aAAa,UAAUA,CAAQ,IAC7D7lE,EAAA,KAAK+kE,GAAYc,GACb3/D,GACFlG,EAAA,KAAK8kE,GAAU5+D,GAEjBlG,EAAA,KAAKqlE,GAAiB,IACtBnpE,EAAA,KAAKwoE,GAAAkB,IAAL,WAEH,CACD,YAAa,CACX,KAAK,gBAAe,CACrB,CACD,iBAAkB,CAChB,GAAI,CAAC,KAAK,OACR,OAEE9lE,EAAA,KAAKwlE,MAAqB,MAC5B,aAAaxlE,EAAA,KAAKwlE,GAAgB,EAGpCtlE,EAAA,KAAKslE,GAAmB,WAAW,IAAM,CACvCtlE,EAAA,KAAKslE,GAAmB,MACxBppE,EAAA,KAAK0oE,GAAAkB,IAAL,UACD,EAJoB,GAIN,EAChB,CAgDD,WAAWC,EAAkBC,EAAqBC,EAAkB,GAAO,OACpEF,IACHA,EAAmB,KAErB,KAAM,CACJ,MAAOG,EACP,OAAQC,CACd,EAAQrmE,EAAA,KAAKglE,IACHsB,EAAc,IAAI5wE,GACxB,IAAI0Q,EAASpG,EAAA,KAAKglE,IACdp9F,EAAQw+F,EACVh/F,EAASi/F,EACPrgG,EAAS,KACb,GAAIkgG,EAAqB,CACvB,GAAIE,EAAcF,GAAuBG,EAAeH,EAAqB,CAC3E,MAAM//F,GAAQ,KAAK,IAAI+/F,EAAsBE,EAAaF,EAAsBG,CAAY,EAC5Fz+F,EAAQ,KAAK,MAAMw+F,EAAcjgG,EAAK,EACtCiB,EAAS,KAAK,MAAMi/F,EAAelgG,EAAK,CACzC,CACDH,EAAS,SAAS,cAAc,QAAQ,EACxC,MAAMugG,EAAcvgG,EAAO,MAAQ,KAAK,KAAK4B,EAAQ0+F,EAAY,EAAE,EAC7DE,EAAexgG,EAAO,OAAS,KAAK,KAAKoB,EAASk/F,EAAY,EAAE,EACjEtmE,EAAA,KAAKylE,MACRr/D,EAAShK,EAAA,KAAKyoE,GAAA4B,IAAL,UAAkBF,EAAaC,IAE1C,MAAMlgG,EAAMN,EAAO,WAAW,IAAI,EAClCM,EAAI,OAAS,KAAK,WAAW,UAC7B,IAAIqxD,EAAQ,QACVpE,EAAQ,UACN,KAAK,WAAW,YAAc,OAChCA,EAAQ,SACCp5B,EAAA,OAAO,aAAP,MAAAA,EAAA,YAAoB,gCAAgC,UAC7Dw9B,EAAQ,UACRpE,EAAQ,WAEV,MAAMmzC,EAAS,GACTC,EAAcD,EAASJ,EAAY,GACnCM,EAAeF,EAASJ,EAAY,GACpC74C,EAAU,IAAI,gBAAgBk5C,EAAc,EAAGC,EAAe,CAAC,EAC/DC,EAAap5C,EAAQ,WAAW,IAAI,EAC1Co5C,EAAW,UAAYlvC,EACvBkvC,EAAW,SAAS,EAAG,EAAGF,EAAc,EAAGC,EAAe,CAAC,EAC3DC,EAAW,UAAYtzC,EACvBszC,EAAW,SAAS,EAAG,EAAGF,EAAaC,CAAY,EACnDC,EAAW,SAASF,EAAaC,EAAcD,EAAaC,CAAY,EACxEtgG,EAAI,UAAYA,EAAI,cAAcmnD,EAAS,QAAQ,EACnDnnD,EAAI,SAAS,EAAG,EAAGigG,EAAaC,CAAY,EAC5ClgG,EAAI,UAAU8/B,EAAQ,EAAG,EAAGA,EAAO,MAAOA,EAAO,OAAQ,EAAG,EAAGmgE,EAAaC,CAAY,CACzF,CACD,IAAItvB,EAAY,KAChB,GAAIivB,EAAiB,CACnB,IAAIW,EAAWC,EACf,GAAIT,EAAY,WAAalgE,EAAO,MAAQ6/D,GAAoB7/D,EAAO,OAAS6/D,EAC9Ea,EAAY1gE,EAAO,MACnB2gE,EAAa3gE,EAAO,eAEpBA,EAASpG,EAAA,KAAKglE,IACVoB,EAAcH,GAAoBI,EAAeJ,EAAkB,CACrE,MAAM9/F,EAAQ,KAAK,IAAI8/F,EAAmBG,EAAaH,EAAmBI,CAAY,EACtFS,EAAY,KAAK,MAAMV,EAAcjgG,CAAK,EAC1C4gG,EAAa,KAAK,MAAMV,EAAelgG,CAAK,EACvC65B,EAAA,KAAKylE,MACRr/D,EAAShK,EAAA,KAAKyoE,GAAA4B,IAAL,UAAkBK,EAAWC,GAEzC,CAGH,MAAMC,EADY,IAAI,gBAAgBF,EAAWC,CAAU,EAC5B,WAAW,KAAM,CAC9C,mBAAoB,EAC5B,CAAO,EACDC,EAAa,UAAU5gE,EAAQ,EAAG,EAAGA,EAAO,MAAOA,EAAO,OAAQ,EAAG,EAAG0gE,EAAWC,CAAU,EAC7F7vB,EAAY,CACV,MAAO4vB,EACP,OAAQC,EACR,KAAMC,EAAa,aAAa,EAAG,EAAGF,EAAWC,CAAU,EAAE,IACrE,CACK,CACD,MAAO,CACL,OAAA/gG,EACA,MAAA4B,EACA,OAAAR,EACA,UAAA8vE,CACN,CACG,CAyED,aAAa,YAAYl0E,EAAM8hC,EAAQJ,EAAW,OAChD,IAAIghC,EAAc,KACduhC,EAAgB,GACpB,GAAIjkG,aAAgB63E,GAAwB,CAC1C,KAAM,CACJ,KAAM,CACJ,KAAAx/C,EACA,SAAA+C,EACA,GAAArpB,EACA,aAAAmyF,EACA,SAAA5gB,CACD,EACD,UAAAj+C,EACA,OAAQ,CACN,KAAM,CACJ,WAAAmG,CACD,CACF,EACD,OAAAxoC,EACD,EAAGhD,EACJ,IAAI+iG,GAAU3/D,GACVpgC,IACF,OAAOhD,EAAK,OACX,CACC,GAAI+iG,GACJ,OAAA3/D,EACV,EAAY1B,EAAU,aAAa,cAAc2D,EAAU,GAAIriC,EAAM,EAC7DA,GAAO,OAAM,IAEbihG,EAAgB,GAChBjkG,EAAK,aAAe,IAEtB,MAAM4gC,KAAWzJ,EAAA,MAAM2K,EAAO,YAAY,kBAAkB,GAAG3H,EAAgB,GAAGpoB,CAAE,EAAE,IAArE,YAAAolB,EAAyE,IAAI,gBAAiB,GAC/GurC,EAAc1iE,EAAO,CACnB,eAAgB4xB,GAAqB,MACrC,SAAAmxE,GACA,OAAA3/D,GACA,UAAWoI,EAAa,EACxB,KAAMnT,EAAK,MAAM,CAAC,EAClB,SAAA+C,EACA,GAAArpB,EACA,QAAS,GACT,kBAAmB,CACjB,WAAY,GACZ,QAAA6uB,EACD,EACD,MAAO,GACP,aAAAsjE,EACA,SAAA5gB,CACR,CACK,CACD,MAAM9jD,EAAS,MAAM,MAAM,YAAYx/B,EAAM8hC,EAAQJ,CAAS,EACxD,CACJ,KAAArJ,EACA,OAAA+K,EACA,UAAA+gE,EACA,SAAApB,EACA,MAAAqB,EACA,kBAAAC,CACD,EAAGrkG,EACAikG,GACFviE,EAAU,iBAAiB1hC,EAAK,GAAIw/B,CAAM,EAC1CtC,EAAAsC,EAAO+iE,GAAiB,KACfQ,GAAYrhE,EAAU,aAAa,UAAUqhE,CAAQ,GAC9D7lE,EAAAsC,EAAOyiE,GAAYc,GACf3/D,GACFlG,EAAAsC,EAAOwiE,GAAU5+D,IAGnBlG,EAAAsC,EAAO2iE,GAAagC,GAEtBjnE,EAAAsC,EAAOijE,GAAS2B,GAChB,KAAM,CAAC/0D,EAAaC,CAAY,EAAI9P,EAAO,eAC3C,OAAAA,EAAO,OAASnH,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAKgX,EACrC7P,EAAO,QAAUnH,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAKiX,EACtC9P,EAAO,oBAAsBx/B,EAAK,IAAM,KACpCqkG,IACF7kE,EAAO,YAAc6kE,GAEvB7kE,EAAO,aAAekjC,EACtBxlC,EAAAsC,EAAOkjE,GAA2B,CAAC,CAAChgC,GAC7BljC,CACR,CACD,UAAUgS,EAAe,GAAOhmC,EAAU,KAAM,CAC9C,GAAI,KAAK,UACP,OAAO,KAET,GAAI,KAAK,QACP,OAAO,KAAK,mBAEd,MAAMshC,EAAa,CACjB,eAAgBlb,GAAqB,MACrC,SAAUoL,EAAA,KAAKilE,IACf,UAAW,KAAK,UAChB,KAAM,KAAK,QAAQ,EAAG,CAAC,EACvB,SAAU,KAAK,SACf,MAAOjlE,EAAA,KAAKylE,IACZ,mBAAoB,KAAK,mBAC/B,EACI,GAAIjxD,EACF,OAAA1E,EAAW,UAAY1T,EAAA,KAAK2oE,GAAAuC,IAAL,UAAsB,IAC7Cx3D,EAAW,kBAAoB,KAAK,iBAAiB,EAAI,EACzDA,EAAW,OAAS,GACbA,EAET,KAAM,CACJ,WAAA2E,EACA,QAAA7Q,CACN,EAAQ,KAAK,iBAAiB,EAAK,EAO/B,GANI,CAAC6Q,GAAc7Q,IACjBkM,EAAW,kBAAoB,CAC7B,KAAM,SACN,IAAKlM,CACb,GAEQ,KAAK,oBAAqB,CAC5B,MAAM2jE,EAAUnrE,EAAA,KAAK0sD,GAAA4B,IAAL,UAAwB56C,GACxC,GAAIy3D,EAAQ,OACV,OAAO,KAELA,EAAQ,cACV,OAAOz3D,EAAW,kBAElBA,EAAW,kBAAkB,aAAe,KAAK,aAAa,cAAgB,EAEjF,CAED,GADAA,EAAW,GAAK,KAAK,oBACjBthC,IAAY,KACd,OAAOshC,EAETthC,EAAQ,SAARA,EAAQ,OAAW,IAAI,KACvB,MAAMg5F,EAAOxnE,EAAA,KAAKylE,KAAU31D,EAAW,KAAK,CAAC,EAAIA,EAAW,KAAK,CAAC,IAAMA,EAAW,KAAK,CAAC,EAAIA,EAAW,KAAK,CAAC,GAAK,KACnH,GAAI,CAACthC,EAAQ,OAAO,IAAIwxB,EAAA,KAAKilE,GAAS,EACpCz2F,EAAQ,OAAO,IAAIwxB,EAAA,KAAKilE,IAAW,CACjC,KAAAuC,EACA,WAAA13D,CACR,CAAO,EACDA,EAAW,OAAS1T,EAAA,KAAK2oE,GAAAuC,IAAL,UAAsB,YACjCtnE,EAAA,KAAKylE,IAAQ,CACtB,MAAMgC,EAAWj5F,EAAQ,OAAO,IAAIwxB,EAAA,KAAKilE,GAAS,EAC9CuC,EAAOC,EAAS,OAClBA,EAAS,KAAOD,EAChBC,EAAS,WAAW,OAAO,QAC3BA,EAAS,WAAW,OAASrrE,EAAA,KAAK2oE,GAAAuC,IAAL,UAAsB,IAEtD,CACD,OAAOx3D,CACR,CAeD,wBAAwB2C,EAAY,CAClC,OAAAA,EAAW,aAAa,CACtB,KAAM,KAAK,QAAQ,EAAG,CAAC,CAC7B,CAAK,EACM,IACR,CACH,CAvpBEuyD,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YA0CAjB,GAAA,YAAAiD,GAAiB,SAAC1kG,EAAM2kG,EAAS,GAAO,CACtC,GAAI,CAAC3kG,EAAM,CACT,KAAK,OAAM,EACX,MACD,CACDk9B,EAAA,KAAK8kE,GAAUhiG,EAAK,QACf2kG,IACHznE,EAAA,KAAK+kE,GAAYjiG,EAAK,IACtBk9B,EAAA,KAAKulE,GAASziG,EAAK,QAEjBA,EAAK,MACPk9B,EAAA,KAAKmlE,GAAkBriG,EAAK,KAAK,MAEnCo5B,EAAA,KAAKwoE,GAAAkB,IAAL,UACD,EACDpB,GAAA,YAAAkD,GAAc,UAAG,CAGf,GAFA1nE,EAAA,KAAKglE,GAAiB,MACtB,KAAK,WAAW,cAAc,EAAK,EAC/B,EAACllE,EAAA,KAAKslE,IAGV,IAAI,KAAK,WAAW,8BAAgC,KAAK,WAAW,mBAAqBtlE,EAAA,KAAKglE,IAAS,CACrG,KAAK,aAAa,OAClB,KAAK,WAAW,YAAY,KAAM,EAAI,EACtC,MACD,CACD,GAAI,CAAC,KAAK,WAAW,8BAAgC,KAAK,WAAW,mBAAqBhlE,EAAA,KAAKglE,IAAS,CACtG,KAAK,iBAAiB,CACpB,OAAQ,0BACR,KAAM,CACJ,eAAgB,GAChB,cAAe,OAChB,CACT,CAAO,EACD,GAAI,CACF,KAAK,eAAc,CACpB,MAAO,CAAE,CACX,CACD,KAAK,IAAI,QACV,EAkDDL,GAAA,YAAAkB,GAAU,UAAG,CACX,GAAI7lE,EAAA,KAAKilE,IAAW,CAClB,KAAK,WAAW,cAAc,EAAI,EAClC,KAAK,WAAW,aAAa,UAAUjlE,EAAA,KAAKilE,GAAS,EAAE,KAAKjiG,GAAQo5B,EAAA,KAAKqoE,GAAAiD,IAAL,UAAuB1kG,EAAM,GAAK,EAAE,QAAQ,IAAMo5B,EAAA,KAAKsoE,GAAAkD,IAAL,UAAqB,EAC3I,MACD,CACD,GAAI5nE,EAAA,KAAKmlE,IAAY,CACnB,MAAMtiG,EAAMm9B,EAAA,KAAKmlE,IACjBjlE,EAAA,KAAKilE,GAAa,MAClB,KAAK,WAAW,cAAc,EAAI,EAClCjlE,EAAA,KAAKglE,GAAiB,KAAK,WAAW,aAAa,WAAWriG,CAAG,EAAE,KAAKG,GAAQo5B,EAAA,KAAKqoE,GAAAiD,IAAL,UAAuB1kG,EAAK,EAAE,QAAQ,IAAMo5B,EAAA,KAAKsoE,GAAAkD,IAAL,UAAqB,GACjJ,MACD,CACD,GAAI5nE,EAAA,KAAKolE,IAAa,CACpB,MAAMthG,EAAOk8B,EAAA,KAAKolE,IAClBllE,EAAA,KAAKklE,GAAc,MACnB,KAAK,WAAW,cAAc,EAAI,EAClCllE,EAAA,KAAKglE,GAAiB,KAAK,WAAW,aAAa,YAAYphG,CAAI,EAAE,KAAKd,GAAQo5B,EAAA,KAAKqoE,GAAAiD,IAAL,UAAuB1kG,EAAK,EAAE,QAAQ,IAAMo5B,EAAA,KAAKsoE,GAAAkD,IAAL,UAAqB,GACnJ,MACD,CACD,MAAM7nE,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,OACbA,EAAM,OAAS3J,GAAwB,KAAK,GAAG,EAC/C,MAAMkN,EAAS,KAAK,WAAW,QAC/BpD,EAAA,KAAKglE,GAAiB,IAAI,QAAQ1jF,GAAW,CAC3Cue,EAAM,iBAAiB,SAAU,SAAY,CAC3C,GAAI,CAACA,EAAM,OAASA,EAAM,MAAM,SAAW,EACzC,KAAK,OAAM,MACN,CACL,KAAK,WAAW,cAAc,EAAI,EAClC,MAAM/8B,EAAO,MAAM,KAAK,WAAW,aAAa,YAAY+8B,EAAM,MAAM,CAAC,CAAC,EAC1E,KAAK,iBAAiB,CACpB,OAAQ,6BACR,KAAM,CACJ,eAAgB,KAAK,WAAW,iBACjC,CACb,CAAW,EACD3D,EAAA,KAAKqoE,GAAAiD,IAAL,UAAuB1kG,EACxB,CACDwe,GACR,EAAS,CACD,OAAA8hB,CACR,CAAO,EACDvD,EAAM,iBAAiB,SAAU,IAAM,CACrC,KAAK,OAAM,EACXve,GACR,EAAS,CACD,OAAA8hB,CACR,CAAO,CACF,GAAE,QAAQ,IAAMlH,EAAA,KAAKsoE,GAAAkD,IAAL,UAAqB,GACtC7nE,EAAM,MAAK,CACZ,EAoGD6kE,GAAA,YAAAkB,GAAa,UAAG,OACd,KAAM,CACJ,IAAAxkE,CACD,EAAG,KACJ,GAAI,CACF,MAAA15B,EACA,OAAAR,CACN,EAAQ44B,EAAA,KAAKglE,IACT,KAAM,CAACtjE,EAAWC,CAAU,EAAI,KAAK,eAC/BkmE,EAAY,IAClB,GAAI,KAAK,MACPjgG,EAAQ,KAAK,MAAQ85B,EACrBt6B,EAAS,KAAK,OAASu6B,UACd/5B,EAAQigG,EAAYnmE,GAAat6B,EAASygG,EAAYlmE,EAAY,CAC3E,MAAMqe,EAAS,KAAK,IAAI6nD,EAAYnmE,EAAY95B,EAAOigG,EAAYlmE,EAAav6B,CAAM,EACtFQ,GAASo4C,EACT54C,GAAU44C,CACX,CACD,KAAM,CAAC3N,EAAaC,CAAY,EAAI,KAAK,iBACzC,KAAK,QAAQ1qC,EAAQyqC,EAAc3Q,EAAWt6B,EAASkrC,EAAe3Q,CAAU,EAChF,KAAK,WAAW,cAAc,EAAK,EACnC,MAAM37B,EAASk6B,EAAA,KAAKolE,GAAU,SAAS,cAAc,QAAQ,GAC7Dt/F,EAAO,aAAa,OAAQ,KAAK,EACjC,KAAK,aAAaA,CAAM,EACxB,KAAK,MAAQ4B,EAAQ85B,EACrB,KAAK,OAASt6B,EAASu6B,GACnBxH,EAAA,KAAK,kBAAL,MAAAA,EAAsB,WACxB,KAAK,OAAM,EAEX,KAAK,kBAAiB,EAExB,KAAK,gBAAkB,MACnB,CAAC,KAAK,WAAW,8BAAgC,CAAC,KAAK,WAAW,mBAAqB,KAAK,uBAC9FmH,EAAI,OAAS,IAEflF,EAAA,KAAK0oE,GAAAkB,IAAL,WACKhmE,EAAA,KAAK0lE,MACR,KAAK,OAAO,kBAAkB,IAAI,EAClCxlE,EAAA,KAAKwlE,GAA2B,KAElC,KAAK,iBAAiB,CACpB,OAAQ,gBACd,CAAK,EACG1lE,EAAA,KAAKqlE,KACP,KAAK,IAAI,aAAa,mBAAoBrlE,EAAA,KAAKqlE,GAAe,CAEjE,EAqFDR,GAAA,YAAA4B,GAAY,SAAC7+F,EAAOR,EAAQ,CAC1B,KAAM,CACJ,MAAOg/F,EACP,OAAQC,CACd,EAAQrmE,EAAA,KAAKglE,IACT,IAAI5mD,EAAWgoD,EACX/nD,EAAYgoD,EACZjgE,EAASpG,EAAA,KAAKglE,IAClB,KAAO5mD,EAAW,EAAIx2C,GAASy2C,EAAY,EAAIj3C,GAAQ,CACrD,MAAMk8F,EAAYllD,EACZmlD,EAAallD,EACfD,EAAW,EAAIx2C,IACjBw2C,EAAWA,GAAY,MAAQ,KAAK,MAAMA,EAAW,CAAC,EAAI,EAAI,KAAK,KAAKA,EAAW,CAAC,GAElFC,EAAY,EAAIj3C,IAClBi3C,EAAYA,GAAa,MAAQ,KAAK,MAAMA,EAAY,CAAC,EAAI,EAAI,KAAK,KAAKA,EAAY,CAAC,GAE1F,MAAMlY,EAAY,IAAI,gBAAgBiY,EAAUC,CAAS,EAC7ClY,EAAU,WAAW,IAAI,EACjC,UAAUC,EAAQ,EAAG,EAAGk9D,EAAWC,EAAY,EAAG,EAAGnlD,EAAUC,CAAS,EAC5EjY,EAASD,EAAU,uBACpB,CACD,OAAOC,CACR,EACD0+D,GAAA,YAAAkB,GAAW,UAAG,CACZ,KAAM,CAAC3zD,EAAaC,CAAY,EAAI,KAAK,iBACnC,CACJ,MAAA1qC,EACA,OAAAR,CACD,EAAG,KACEk/F,EAAc,IAAI5wE,GAClB6wE,EAAc,KAAK,KAAK3+F,EAAQyqC,EAAci0D,EAAY,EAAE,EAC5DE,EAAe,KAAK,KAAKp/F,EAASkrC,EAAeg0D,EAAY,EAAE,EAC/DtgG,EAASg6B,EAAA,KAAKslE,IACpB,GAAI,CAACt/F,GAAUA,EAAO,QAAUugG,GAAevgG,EAAO,SAAWwgG,EAC/D,OAEFxgG,EAAO,MAAQugG,EACfvgG,EAAO,OAASwgG,EAChB,MAAMpgE,EAASpG,EAAA,KAAKylE,IAASzlE,EAAA,KAAKglE,IAAU5oE,EAAA,KAAKyoE,GAAA4B,IAAL,UAAkBF,EAAaC,GACrElgG,EAAMN,EAAO,WAAW,IAAI,EAClCM,EAAI,OAAS,KAAK,WAAW,UAC7BA,EAAI,UAAU8/B,EAAQ,EAAG,EAAGA,EAAO,MAAOA,EAAO,OAAQ,EAAG,EAAGmgE,EAAaC,CAAY,CACzF,EACDzB,GAAA,YAAAuC,GAAgB,SAACQ,EAAO,CACtB,GAAIA,EAAO,CACT,GAAI9nE,EAAA,KAAKylE,IAAQ,CACf,MAAM5iG,EAAM,KAAK,WAAW,aAAa,UAAUm9B,EAAA,KAAKilE,GAAS,EACjE,GAAIpiG,EACF,OAAOA,CAEV,CACD,MAAMmD,EAAS,SAAS,cAAc,QAAQ,EAC9C,MAAC,CACC,MAAOA,EAAO,MACd,OAAQA,EAAO,MACvB,EAAUg6B,EAAA,KAAKglE,IACGh/F,EAAO,WAAW,IAAI,EAC9B,UAAUg6B,EAAA,KAAKglE,IAAS,EAAG,CAAC,EACzBh/F,EAAO,WACf,CACD,GAAIg6B,EAAA,KAAKylE,IAAQ,CACf,KAAM,CAAC/jE,EAAWC,CAAU,EAAI,KAAK,eAC/B/5B,EAAQ,KAAK,MAAM,KAAK,MAAQ85B,EAAY1L,GAAc,gBAAgB,EAC1E5uB,EAAS,KAAK,MAAM,KAAK,OAASu6B,EAAa3L,GAAc,gBAAgB,EAC7EmQ,EAAY,IAAI,gBAAgBv+B,EAAOR,CAAM,EAEnD,OADY++B,EAAU,WAAW,IAAI,EACjC,UAAUnG,EAAA,KAAKglE,IAAS,EAAG,EAAGhlE,EAAA,KAAKglE,IAAQ,MAAOhlE,EAAA,KAAKglE,IAAQ,OAAQ,EAAG,EAAGp9F,EAAOR,CAAM,EACvF++B,EAAU,uBAClB,CACD,OAAO,gBAAgBnG,EAAA,KAAKglE,GAAO,CACpC,EAqJDlc,GAAA,YAAA4B,GAAkB,SAAC56C,EAAY,OAC7B,KAAM,CACJ,UAAAc,EACA,kBAAmB,CACjB,QAAAhN,CACD,CACP,EAAQ,KAAK,aACHmkE,EAAkBj4D,EAAW,YAAcc,EAC3Co3D,KAAiB7tE,EAAA2V,EAAW,oBAAX,YAAA3V,EAA8B,MAAO,MAAQyJ,EACpE,MAAO,CACL,OAAQ,CAAC,KAAK,eAAiB,CAAC,KAAK,iBAAmBmkE,GAAmBC,EAC3E,cAAAA,CACN,CACG,EAroBDzgG,GAZIi9F,GAYG,QAAQ,SACfj9F,GAbIi9F,GAaG,cAAc5vE,GAAqB,sFAspB5C,MAAMqzE,GAAN,MAAMA,EAAsB,CAiB1B,YAAY,CACV,UAAAvjE,EACA,UAAAkM,EACA,IAAAtP,EACA,gBAAA+lD,EACA,qBAAAF,EACA,gBAAA+gB,EACA,UAAA1T,EACA,UAAAtlD,EACA,SAAA3N,EACA,KAAAyS,CACJ,EAAK,CA+MHjX,EAAA,KAAAorE,IA4JAprE,EAAA,KAAIqrE,IAMJrrE,EAAA,KAAAsrE,IA+CAtrE,EAAA,KAAAurE,IA+KAvrE,EAAA,KAAAwrE,IA1mBAxrE,EAAA,KAAAyqD,GAAA,QACAzqD,EAAA,KAAAyrE,GAAc,IACdzrE,EAAA,KAAA0rE,GAAmB,MACnB1rE,EAAA,KAAA2rE,GAAW,MACX3rE,EAAA,KAAA4rE,GAAwB,MACxB5rE,EAAA,KAAA6rE,GAAW,IAAI,KACf7rE,EAAA,KAAA8rE,GAAkB,IAClB9rE,EAAA,KAAA+rE,GAAe,IACf/rE,EAAA,KAAAgsE,GAAc,IACdhsE,EAAA,KAAAisE,GAAa,MACbjsE,EAAA,KAAAksE,GAAkB,MAClBlsE,EAAA,KAAAmsE,GAAa,MACbnsE,EAAA,KAAAosE,GAAmB,MACnBpsE,EAAA,KAAAuH,GAAA,QAeE,MAAM8kE,EAAc,CAAC,GAAGppE,EAAAioE,GAAsB78D,IAAa,OAAQ,GACnE,GAAI,CAAC68D,GAAsB,aAAc,CACvCA,GAAsB,aAAe,GACrC,UAAW5jE,KAAc+kE,EACvB/kE,EAAW,WAAW2P,EAAMtP,CAAS,CAExC,CACDA,EAAU,oBAAoB0kE,CAAW,EACzClpE,EAAA,KAAKoE,GAAaI,GAClB,KAAK,UAAYkM,EACjB,KAAK,IAAMtP,EACXpB,EAAA,KAAKsnD,GAAwBL,GAC7BjnD,EAAA,KAAKuoE,GAAmBP,GACxB,KAAK,SAAW3mE,EAChBrB,EAAA,KAAKgpE,GAAah6D,GAClB,KAAK,UAAYslD,EACjB,KAAK,YAAcnN,EACnBrnD,EAAA,KAAKsE,IAAW,SAAS,IAAI,CAC9B,CACD,IAAI,SAAU,CACZ,OAAOtE,EAAA,KAAK4oE,IAAS,OAAS,CAC/B,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,SAAW5oE,EAAA,KAAKsE,IAAW,QAAS,IAAK1P,GAAqB,IAC3E,CACD,cAAcxiB,EAAM,CAClB4tB,EAAA,KAAKsE,IAAW,cAAclyB,CAAI,CACnC,CACD,WAAWA,EAAO4tB,EAAA,KAAKsE,IAAW,QAAO,EAAI,CAE3C,OADAlI,EAAA,KAAKmsE,GAAAc,IAAL,WACQj3F,EAAI,CACV,KAAKwiB,GAAqB,KACxB,KAAK,qBAAoB,EACzB,KAAK,oBAAoB,EAAK,EAC9B,KAAK,mCAAmC,EAAI,EAC5C,KAAK,aAAY,EACjB,OACF,KAAKA,GAAqB,IACxB,KAAK,qBAAoB,EACzB,KAAK,oBAAoB,EAAI,EAC7B,KAAK,YAAW,EAChB,MACF,KAAKA,GAAqB,UACxB,KAAK,oBAAmB,EACxB,KAAK,oBAAoB,EAAK,EAC9B,KAAK,aAAY,EACjB,MACF,QACE,KAAK,qBAAoB,EACzB,KAAK,oBAAoB,EAAI,EAC7B,KAAK,YAAW,CACnB,CACD,KAAK,mCAAmC,EAAK,EAC7C,KAAM,CACJ,UAAA00E,CACN,EAAQ,KAAK,IACT,UAAWjlE,KAAcrE,EAAAioE,GAAsB78D,IAAa,OAAM,EAChEk+D,EAAU,OAAO,GAAGjlE,EAAW,KAAK,UAAWjyB,IAASiyB,EAAW,WAAW,EAEhF,KAAK,IAAI,OAAS,EACnB,CACD,aAAa6K,EAAW,OACtB,OAAOA,MAAc/U,EAAA6F,EAAA,KAAKkpE,MAAL,YAAA/uE,EAAiB,IACvC,CACD,gBAAgBkW,EAAW,CACzBrQ,EAAA,KAAKsE,IAAW,gBAAgB+L,CAAS,CAC1C,CACD,YAAYhlC,EAAQ,CAClB20B,EAAA,KAAKsE,IAAW,YAAYj5B,CAAM,CACnC,CACD,eAAeuE,EAAM,CACnBowB,EAAA,KAAKsE,IAAW,eAAe10B,CAAI,CACpC,CACD,cAAcmb,EAAU,GAAO,CAC7B,KAAK,IAAI,UAAU,OAAO,UAAW,CAACA,CAAO,CAC9C,CACD,oBAAoBA,EAAU,GAAO,CACnC,KAAK,IAAI,UAAU,OAAO,WAAY,CAACA,CAAO,CAC/C,CACD,mCAAmCA,EAAU,GAAO,QAClDoP,EAAA6F,EAAA,KAAKyoE,MAAL,MAAAtuE,EAAuB,IAAI,UAAU,OAAO,WAAY,CAACpP,EAC1D,CACD,MAAM,QAAS,CACbmV,EAAA,KAAK6oE,GAAc,IACnB,KAAK,IAAI,SAAW,EACpB,KAAK,oBAAoB,EAAI,EAC7B,MAAMQ,EAAuB,IAAI,IACjC,UAAW/mE,KAAUxC,EAAA,KAAK4oE,IAAS,OAAM,EACvCpmE,EAAO,cAAa,EACpBA,EAAO,KAAK,EAAI,EACZA,EAAO,sBACTxC,EAAA,KAAKsE,IAAW,gCAAgC9B,CAAM,EACtD+mE,EAAqB,IAAI/mE,EAAO,mBAAmB,GAGvD,GAAI,CAACxC,EAAA,KAAKyoE,IAAkB,CAC1BvoE,EAAA,KAAK6oE,GAAc,IACnB,MACD,CACD,MAAMS,EAAYxpE,EAAA,KAAKyoE,IAAiB,uBAAsB,EAC9D,UAAWgB,KAAYD,EAAW,CAKhC,GAJAC,EAAS,KAAI,EACTzpE,EAAA,KAAKsE,IAAW,2BAA2BmlE,EAAS,KAAK,EAAE,GAG3DF,EAAqB,IAAIE,EAAS,KAAK,EAAE,EAC3C,SAEF,MAAMjnE,EAAS,MAAM,KAAK,YAAYinE,CAAQ,EACzCjnE,IAGL,KAAK,aAAaA,CAAM,EACxBA,EAAO,cAAa,EACrB,CACDtC,EAAA,KAAK6oE,GAAc,GACpB,CACD,SAAU,OACR7oE,EAAA,KAAK4oE,GAAe,IACpB,KAAK,IAAI,SAAW,GACpB,KAAK,oBAAoB,EAAK,EAC9B,MAAMY,EAAqB,IAAI,IACzBC,EAAmB,IAAI,IAC7B,UAAWnnE,KAAUxC,EAAA,KAAK4oE,IAAS,OAAM,EAEvC,GADApmE,EAAO,eAAc,EACjB,EAACA,EAAO,oBAGZ,IAAIA,EAAO,UAAW,IAAK,KAAM,CAC/BknE,EAAmB,IAAIlnE,EAAO,oBAAqBA,CAAM,EACzD,QACR,MACQmnE,EAAiB,IAAInnE,EAAO,oBAAqBA,CAAM,GAEzDrI,EAAA,KAAK,sBAAsBqI,EAAO,mBAAmB,IAArD,MAAArI,EAAwD,OACxDqI,EAAO,OAAM,EAEf,GAAIxC,EAAA,KAAKyoE,IAAkB,CACzB,MAAMe,EAAYxpE,EAAA,KAAKyoE,IAAiB,uBAAsB,EAC9D,UAAWgB,KAAYD,EAAW,CAChC,KAAM,CACJ,GAAAz0F,CACV,EAAY00F,EAAS,KACb,GAAIzpE,EAAA,KAAKsE,IAAW,2BAA2BvvB,CAAE,EAC/C,SAEF,IAAIytB,EAASmnE,EAAiB,IAAI50F,CAAE,EACpC,GAAIytB,EAAQ,CACVA,EAAO,uBAAuBinE,CAAQ,EACtCjnE,EAAO,KAAK,EAAK,EACjBinE,EAAS,KAAI,EACb,QACD,CACDjnE,EAASknE,EAAmB,IAAI30F,CAAE,EAC9BytB,IACFxC,EAAA,KAAKsE,IAAW,6BAA6B9B,CAAM,EAC/CA,EAAO,wBAAwBinE,CAAQ,GACzCjnE,EAAO,KAAK,EAAK,GAGrBinE,EAAS,KAAI,CACd,CACF,CACDrtE,EAAA,KAAKmsE,GAAAc,IAAL,WACI,KAAK,UACP,KAAK,IAAI,OAAS,IAEpB,KAAM,CACJ,UAAAC,CACN,EAAQ,KAAK,IACT,UAAWjlE,KAAcrE,EAAAioE,GAAsB78D,IAAa,OAAM,EAChEk+D,EAAU,OAAO,GAAGjlE,EAAW,KAAK,SAAS,EAE/C,KAAK,qBAAoB,EACzB,KAAK,mCAAmC,EAAI,EAC5CnE,EAAA,KAAK4oE,GAAe,GACrB,CACD,sBAAsB/zF,EAAI,OACxB,QAAOolB,EAAA6F,EAAA,KAAKyoE,MAAL,YAAAtuE,EAAuB,sBAAsBplB,KAAO,IAC5D,CACD,gBAAgBytB,EAAQ,CACAxC,EAAA,KAAKsE,IAAW,UAAS,IACzB9B,GAGtBxC,EAAA,KAAKsE,IAAW,gBAAgB9B,CAAM,CACvC,CACD,qBAAsB,OAEpB,GADA,KAAK,IAAI,SAAW,IAChBrI,EAAA6F,EAAA,KAAKkpE,MAAL,MAAA/uE,EAAiB,KAAO,CAAC6F,EAAA,KAAKmpE,IAAkB,CAClDjpE,EAAA,KAAKipE,GAAmB,IAAI,iBAC5B,MAAM7lE,EAAStD,EAAA,KAAKsE,IAAW,eAAetE,EAAA,KAAKmpE,GAAgB,EACnEnpE,EAAA,KAAKkpE,IAAW,IAAI,iBAAiB,cAAe9sE,EAAA,KAAK+rE,GAAAyB,IAAsB,KAAK,IAAI,EAAG,CACzF,OAAAtmE,CACR,CAAO,EACDtD,EAAA,KAAKkpE,IAAW,IAAI,UAAU,IAAI,cAAc,CACjD,CACF,CACD,sBAAuB,OACrB,KAAK,IAAI,SAAW,GAChB/uE,EAAA6F,EAAA,KAAKkpE,MAAL,MAAA/uE,EAAiB,KAAO6F,EAAA,KAAKmpE,MAC/BnpE,EAAA,KAAKmpE,IAAiB,QACtBjpE,EAAA,KAAKipE,GAAmB,MACxBnpE,EAAA,KAAKkpE,IAAW,IAAI,UAAU,OAAO,cAAc,EAEtD,CA+BD,aAAc,CACZ,GAAIlpE,EAAA,KAAK0oE,IACP,OAEFxoE,EAAA,KAAKwoE,GAAW,IAAI,iBACpB,MAAMplE,EAAStD,EAAA,KAAKsE,IAAW,eAAetE,EAAA,KAAK0oE,GAAQ,EAC3D,KAAK,IAAI,iBAAiB,cAAe,KAAK,YAAY,KAAK,IAAI,EAAG,CACpE,OAAAplE,CACN,CAAK,EACD,MAAM0P,EAAY,KAAK,UAAU,KAAK,IAAI,EAC1C,KAAK,IAAI,iBAAiB,YAAaA,EAAW,CAChD,OAAA1P,CACN,CAAK,EACD,KAAK,IAAI,iBAAiB,gBAAiB0P,EAAW,CACpD,OAAA1P,CACN,CAAK,CACF,CACD,cAAe,QACbnJ,EAAA6F,EAAA,KAAK0oE,MAAL,MAAAvuE,EAAe,QACf+F,EAAA,KAAKwoE,GAAW,KACjB,CACD,OAAOlmE,EAAQ,CACbxC,EAAA,KAAK4oE,IAAS,IAAIpmE,EAAO,GAAIA,CAAM,EACnC,KAAM,CACJ,oBAAA2O,CACD,EAAG3O,EACA2O,GAAuBnR,EAAA,KAAKsE,IAAW,2BAA2B6M,CAAmB,GACvFnR,EAAA,KAAKsE,IAAW,+BAA+B9B,CAAM,CAExD,CACD,OAAOA,EAAQ,OACbxC,EAAA,KAAK4oE,IAAS,OAAOpmE,EAAO,EAAE,GAC9BrI,EAAA6F,EAAA,KAAKwnD,MAAL,MAAArtD,EAA4B,yBAAyBqI,EAAO,YACxD,CAACxC,EAAA,KAAK8oE,KAAgBtmE,EAAO,qBAC/BxC,EAAA,KAAKsE,IAAW,4BAA4B9B,CAAM,CAErD,CACD,OAAOA,EAAQ,CACb,KAAK,OAAOA,CAAM,EAClBxC,EAAA,KAAKsE,IAAW,aAAa9B,CAAM,EACnCA,EAAO,IAAI,SACXA,EAAO,gBAAkB,EAC1B,CACD,aAAaA,EAAQ,OACfA,EAAO,SAAW,OAGlBA,EAAO,QAAUA,EAAO,sBAC1BxC,EAAA,KAAKsE,IAAW,4BAA4B9B,EAAO,mBAAmB,EACtE+d,GAAiB,wBAAwB/d,CAAM,EAC/CA,EAAO,oBAAsB,MAE/B,KAAK,OAAOA,CAAM,GAClBrI,EAAAqI,EAAO,SAAP,MAAArI,EAAe,OAAOqI,GACtBA,EAAO,UAAU,IAAI,EACjBA,EAAO,KAAOA,EAAO,kBACvBA,EAAO,IAAI,SACX,KAAK,IAAI,OAAOA,EAAO,GAAG,GAE7B,CACD,IAAIA,EAAQ,CACV,GAAI,EAAAA,EAAO,SAAW,MAAQA,EAAO,iBAMrC,IAHA,KAAK,aAAaA,CAAM,EACxBxC,EAAA,KAAKsE,IAAW,UAAU9B,CAAM,EAChC,KAAK,OAAOA,CAAM,EACd,CAACA,EAAO,gBAAiB,CAC3B,MAAMlB,EAAMkB,EAAO,SACnB,KAAK,IAAI,OAAOlB,CAAG,EACnBkB,EAAO,gBAAkB,EAC1B,CACDA,EAAO,kBAAiB,EACxBA,EAAO,UAAU,CAACxC,EAAA,KAAK+oE,GAAW,EAClC/oE,EAAA,KAAKsE,IAAW,uBAAuB9B,CAAM,EAC7CA,EAAO,iBAAiBA,EAAO,oBAAoB,EACpD,CACD,gBAAgBA,EAAQ,OACtB,GAAI,CAACA,EAAO,gBACV,OAEF,KAAM,CACJ,cAAA+M,CACD,EAAG,SACA/M,EAAO,IAAI,SAAS+M,CAAa,GAAK,CAACvP,EAAA,KAAK2oE,MAC9CnmE,EAAO,oBAAsB,GAC7BtC,EAAA,KAAKyoE,GAAwB,WAAW,IAAM,CAC5CzoE,EAAA,KAAKyoE,GAAwB,MACxBnmE,EAAO,IAAI,SAAS,SAAS,aAAa,EAS7CA,EAAO,oBAAsB,IAR7BA,EAAO,IAAI,iBAAiB,UAAW,IAAM,CAC3CA,EAAO,oBAAsB,EACzC,EAAa,CACD,KAAM,GACN,OAAQxC,EAAA,KAAKsE,IAAW,OACpC,CAAW,EACDiL,EAAc,MAAK,EAItB,EAAE,CAAC,IAEN/M,EAAO,qBAAsBrI,EAAA6F,EAAA,KAAKwnD,MAAL,YAAArtD,EAA4B,iBAAiB,KAAK,IAAKqI,EAAO,IAAKA,EAAO,WAAY,GACpH,CACD,aAAaA,EAAQ,CACfA,EAAO,oBACTA,EAAO,SAAPA,EAAO,OAAW,MAClBA,EAAO,QAAO,EACdA,EAAO,KAAI,GAEX,KAAK,IAAIA,CAAM,CAElB,CACD,kBAAkBA,EAAQ,CACxB,MAAMyE,EAAM,IAAMzE,EAAO,WAAW,QAAQA,CAAM,EAC5C0E,EAAO,IAAM,CACjB1E,EAAO,OAAM,CACnB,EACI,KAAK,YAAY,CACf,IAAAyE,EACA,KAAAC,EACA,SAAU,EAChB,CAAK,CACF,CACD,WAAY,CACV,OAAOlH,EAAA,KAAKsE,IAAW,OACxB,CAID,eAAe+J,EAAI,CACjB,OAAOrO,EAAA,KAAKsE,IAAW,eAAe+J,CAAE,CACzC,CAKD,yBAA0B,OACxB,OAAOlU,EAAA6F,EAAA,KAAKooE,GAAAyB,MAAL,YAAA1vE,EAAyB,yBACjC,CACD,MAAM,YAAY/nB,EAAM/G,EAAQ,CAC9B20B,EAAA,KAAKsE,IAAW,cAAclyB,CAAI,EAClC,MAAM4tB,EAAA,KAAKsE,IAAW,WAAWlyB,CAAI,EACrC,KAAM,CACJ,QAAAisB,EACA,QAAAC,CACN,EAAQlC,EAAA,KAAKksE,GAAAwB,IAAL,WACE/0F,EAAK,KAAK,YACVytB,EAASpG,EAAA,KAAKisE,GAAA0B,IAAL,UAAsB,CACnC,OAAQ,KACR,GAAAh1F,EACA,EAAGspB,EACH,EAAGC,EACH,UAAW0B,EAAA,KAAKsE,IAChB,WAAY,GACZ,GAAGj5B,CACT,GACQm3B,GACF,KAAK,IAAIA,CAAM,CAElB,CACD,MAAM,YAAYx/B,EAAM,OACtB,OAAQ,OAAMm3B,EAAA6F,EAAAioE,GAAsB78D,IAAa,IAAIpoC,EAAK,gBAAkBA,EAAK,oBAAoB,IAAvF,YAAAm3B,EAA0F,YAAYn3B,EAAM,KAAMg9B,EAAA,KAAKsE,OAAgB,IACtJ,CACD,sBAAsBr/B,EAAO+kG,EAAYhnG,EAAO,GAAI,CAClD,MAAM+R,EAAK,KAAK,YACVytB,EAASpG,EAAA,KAAKisE,GAAA0B,IAAL,UAAsB,CACnC,OAAQ,KACR,GAAAh1F,EACA,EAAG9P,EAAM,QACT,EAAGA,EAAM,QACT,UAAW+6B,EAAA,KAAKsE,IAChB,WAAA0lE,EACA,GAAGhnG,CACT,GACI,OAAIw/B,GACF,KAAK,IAAIA,CAAM,EAEVA,CACR,CAoBD,aAAax/B,EAAO,GAAI,CACtB,KAAK,sBAAsBo5B,EAAA,KAAKksE,GAAAwB,IAAL,WAAwB,GAAM9mG,CAAI,CAC9D,CACD,YAAYw/B,EAAQ,CAClBxC,EAAA,KAAKsE,IAAW,YAAY9B,CAAM,CACnC,CACD,eAAeA,EAAQ,CACrBxC,EAAA,KAAKsE,IAAW,eAAe9B,CAAM,CACtC,CACD,SAASA,EAAQ,CACfxC,EAAA,KAAKsE,IAAW,SAAS9B,CAAM,CAChC,CACD,UAAUv9B,EAAO,OACf,KAAM,CACJ,MAAA0iC,CACN,EAAQvS,GAAiB,SAWrB,GAVInwB,EAAM,SAAW,GAAKA,EAAM,SAAW0iC,GAGvC1iC,EAAM,SAAW,KAAK,KAGtB,CAAC+6B,EAAA,KAAK6oE,MAGV3oE,EAAA,KAAK2oE,GAAkB,KACnB1uE,EAAA6F,EAAA,KAAKooE,GAAAyB,MAAL,MAAA1vE,EAAyB,UAAY6F,EAAA,KAAKooE,GAAAyB,IAAmB,yBAC/D,OAEF,GAAI,CAAC7pE,EAAA,KAAKwoE,IAAa,CACrBtoE,EAAA,KAAKsoE,GAAc,IACnB,MACD,CACD,MAAMyB,EAAcjqE,EAAA,KAAKsE,IAAW,QAAO,EAC3C,GAAI2lE,IAAgBr1E,GAAqB,OAASq1E,IAAgBr1E,GAAqB,UAAW,CAChGoL,EAAA,KAAKsE,IAAW,cAChB,MACD,CACD,KAAK,sBAAsBr/B,EAAO,EAAK,CACxC,CACD,YAAYA,EAAO,OAIjB,GAHI+6B,EAAA,KAAKsE,IAAW,QAAO,IAAO1P,GAAqB,WACrD,KAAK,oBAAmB,EAEtBoL,EAAA,KAAK6oE,IAAiB,CACxB3oE,EAAA,KAAK2oE,GAAkB,IACvB,MACD,CACD,KAAM,CACJ,MAAAlhE,CACN,EAAQvS,GAAiB,SAIrB,GAHInwB,EAAM,SAAW,GAAKA,EAAM,SAAW0iC,GAGvC1iC,EAAM,SAAW,KAAK,IACxB,OAGF,GADAi7B,EAAA,KAAK2oE,GAAkB,KACnB1uE,EAAA6F,EAAA,KAAKooE,GAAAyB,MAAL,MAAA1vE,EAAyB,SAAU,CACrC,KAAK,oBAAoBl1B,CAAK,EAC9B,MACD,CACD,MAAMu9B,EAASxC,EAAA,KAAKsE,IAAW,UAAS,EACxCpE,EAAA,KAAKsoE,GAAc,CAAChmE,GAAUA,EAAO,QAAO,EAC7C,CACD,oBAAoBv9B,EAAO,CAIzB,GAHA,KAAK,IAAI,MAAM,CACb,cAAe,EACrB,CAAK,EACG+6B,EAAA,KAAKgpE,IAAY,CACnBhpE,EAAA,KAAKooE,GAAAyB,IAAmB,aAAa,KAAM7pE,EAAA,KAAKsE,IAAY,GAAOr/B,CAAK,EACxE,MACD,CACD+6B,EAAA,KAAKsE,IAAW,yBAAyB,IAAI,EAC7CpE,EAAA,KAAK8oE,GAAa,IAAI,iBACtB,MAAM1lE,EAAStD,EAAA,KAAKsE,IAAW,eAAetE,EAAA,KAAKgpE,GAAU,EAC7D,KAAK,IAAI,iBAAiB,OAAQ,CAAC,CACjC,cAAAkB,CACN,IAAU,CACAA,GAAiB,CAAC,KAAK,IAAI,SAASA,CAAa,IACnDhqE,EAAA,KAAK+oE,GAAkB,MACvB,KAAK,eAAc,EAE3B,EAAO,CACD,OAAA3lE,CACN,CAAK,EACDtD,EAAA,KAAKooE,GAAAyB,IAAmB,aAAa,KAAM7pE,EAAA,KAAKsE,IAAY,GAAOr/B,CAAK,CACzE,CACD,MAAM8/D,EAAI,CACR,GAAIA,EAAI,CACN,KAAM,CACJ,cAAAx1B,CACD,EAAG,SACA,KAAK,IAAI,SAASA,CAAa,GACjCrP,EAAA,KAAK+oE,GAAkB15D,GAEzB,MACD,CACGvP,EAAA,KAAKipE,KACP,WAAW,IAAM,QACf9uE,EAAA6F,EAAA,KAAKipE,MAAL,MAAA9uE,EAAsB,QACtB+F,EAAA,KAAK+oE,GAAkB,KACxB,EAAE,CAAC,CAEP,CACD,kBAAkBxQ,EAAY,GAAO,CACnC,OAAKz4D,EAAA,KAAKgpE,KAGVhpE,EAAA,KAAKsE,IAAW,yBAAyB,IAAI,EAC7CtE,EAAA,KAAKgpE,IAAW,QAChB9oE,EAAA,KAAK8oE,GAAa,MAClB9oE,EAAA,KAAK+oE,GAAkB,MAChBjpE,EAAA,KAAKooE,GAAAyB,IAAmB,WAAWpR,CAAS,GAN1C,IAOV,CACD,cAAcj2D,EAAQvR,EAAGO,EAAG,CAC1B,MAAMsc,EAAQ9N,EAAA,KAAKsE,IAAW,WAAWrT,EAAGO,CAAC,EAC7C,OAAIsc,IAAU,MAAQA,IAAU,KACvB,IAETA,EAAM,aAAatL,CAAM,EAClB,GACR,CACD,gBAAiB,CACf,OAAIxC,EAAA,KAAKgpE,KACP,KAAK,kBAAiB,EACf,IAEF,EACR,CACD,iBAAkB,CACXhpE,EAAA,KAAKgpE,KAGVhpE,EAAA,KAAKooE,GAAAyB,IAAmB,2BAA2B,IAAI,CACxD,CACD,SAAU,SACR,KAAK,eAAc,IACf1vE,EAAA6F,EAAA,KAAKsE,IAAW,UAAS,IAAzB,YAAAnK,EAA6B,UAAW,OAC1C6F,EAAA,KAAKsE,IAAW,iBAChBtE,EAAA,KAAKsE,IAAW,gBAAgB,IAAI,GAElCtE,EAAA,KAAK2oE,MACP,aAAa3oE,EAAA,KAAK2oE,GAAqB,EACvCzoE,EAAA,KAAKyoE,GAAwB,OAE/B,UAAWnmE,KAAUxC,EAAA,KAAK4oE,IAAS,OAAM,GACvC1uE,EAAA8F,EAAA,KAAKwnD,MAAL,MAAAttD,EAA4B,yBAAyBsI,EAAO,YAC5DA,EAAO,UAAU,IAAI,EACrBA,EAAO,gBAAkB,GACzBA,EAAO,IAAI,SAEb,KAAK,IAAM,KACXxC,EAAA,KAAK4oE,IAAS,QACd5oE,EAAA,KAAKsE,IAAW,YAAY,IAAI,CACjC,CAQD,OAAO,CACL,SAAA/C,CACJ,EAAK,CACD,KAAK,SAAWA,EAChBjK,GAAmB,KAAK,IAAKiK,CAAQ,EACrC,UAAWiB,KAAUxC,EAAA,KAAKsE,IAAW,WAAW,KAAK,SAAS,EAC5D,KAAK,IAAI9B,CAAM,EACfA,EAAO,QAAO,EAEhB,KAAK,WAAU,CAChB,CACD,OAAO,CACL,SAAAjB,CACJ,EAAK,CACDvB,EAAA,KAAKsE,IAAW,iBAChBlI,EAAA,KAAKmsE,GAAAc,IAAL,WACA,MAAMc,EAAc,KAAK,SAAS,SAC5B/rE,EAAWmD,EAAS,SAK1B,GAJA,KAAK,SAAWA,EAChBjK,GAAmB,KAAK,IAAK,CAC3B,SAAA8G,CACN,CAAK,EACG+rE,IAAgB/rE,EAClB,UAAWoE,KAAUxC,EAAA,KAAK4oE,IAAS,OAAM,EACvCpmE,EAAO,OAAOpE,CAAQ,CAG3B,CACD,IAAI,gBAAiB,CACnB,KAAM,CACJ,UAAAsD,EACA,WAAAC,CACN,EAAQ,KAAK,SAAS,QAClB,MAAO,CAACD,EAAWC,CAAU,CAC9B,CACD,IAAI,OAAQ,CACV,OAAO3B,EAAA,KAAKsE,IAAW,eAAe,SACvC,CACH,EAvpBEkjD,GAAA,YACAghB,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACAC,GAAA,YACA7kE,GAAA,YAEO8G,GAAA,YA2NP+8D,GAAA,YAAAyB,GAAqB,SAAC3kG,EAAO,CAC3B+6B,EAAA,KAAKsE,IAAW,cAChB,KAAM,CACJ,OAAAjrB,CACD,EAAGpU,EACJ,GAAIoU,IAAW2mB,EAAA,KAAKkpE,IAAW,MAAQ7vF,EAAO,aAAa,MAAM,IAAM,OAASA,EAAO,UAAU,SAAS,cAAc,IAAM2mB,EAAA,KAAKkpE,IAAW,IAAI,SAAS7vF,CAAM,EAAG,CAClK,KAAM,CACJ,MAAAsuB,CACR,EAAUvS,GAAiB,SACrB,GAAInwB,EAAM,SAAW,GAAKA,EAAM,SAAW0iC,EACzC,OAEF3H,EAAA,KAAKsE,IAAW,eAAe,YAAa,GAAM,EAAI,EACtDtE,EAAA,KAAKkpE,IAAW,IAAI,UAAU,IAAI,MAAM,EACxC,KAAK,cAAa,EAClBhT,GAAgB,kBAAkB,KAAMl2D,EAAA,KAAKsE,IAAW,YAAc,MAAO,CAC3E,OAAQtE,EAAA,KAAKkpE,IAAW,IACxB,EAAGjkG,EAAM,EACT,EAAGA,EAAM,CACjB,CAAO,EACD+6B,EAAA,KAAKkpE,IAAW,IAAI,iBAAiB,YAAa,IAAM,CACtDlpE,EAAA,KAAKkpE,IAAW,IAAI,UAAU,OAAO,MAAM,EAC3C,KAAK,cAAc,EAAI,CAC/B,EAAS,CACD,KAAM,GACN,OAAQlpE,EAAA,KAAKsE,IAAW,OAChC,CAAO,EACDr/B,EAAM,eAAc,CACrB,CACF,EA+HGmjG,GAAA,YAAAyB,GAAkB,UAAG,CACvB,OAAO7pE,EAAAioE,GAAsB78D,IAAa,IAAIpL,EAAA,KAAKsE,IAAW,QAAO,CAAE,CACxE,EAID+jE,GAAA,YAAA0B,GAAgB,SAAC1+F,EAAQ,CACvB,MAAMg5B,EAAarE,EAAA,KAAKooE,GAAAyB,IACxB,OAAOxlE,EAAa,IAAIA,EAAW,UAAU,YAAYh5B,CAAM,EAAI,IACpE,EA4CDi9F,GAAA,YAAAwB,GAAe,UAAG,CAChB,KAAM,CACJ,EAAA74E,EACA,EAAAO,EACA,MAAA5pB,EACA,OAAAR,CACN,EAAQ,KAAK,IAAI,wBACPouD,EAAM,KAAK,IAAI,EAAGvkC,CAAC,EACnBykC,EAAM,KAAK,IAAI,EAAGlkC,CAAC,EACnBokC,EAAM,KAAK,IAAI,OAAO,WAAY3kC,EAAIrpB,CAAK,EAC3CkuD,EAAM,KAAK,IAAI,OAAO,YAAatkC,EAAIpqB,CAAM,EAC7Co3B,GAAWg3B,EAAMI,GAAO,EAAI3kC,EAC5BwN,GAAWi3B,EAAMI,GAAO,EAAItkC,EAC5B,CAAC6M,EAASC,CAAO,EAAI,KAAK,SAAS,SAAW,MAAQ,EAAI,CAACE,EAASC,CAAO,EAAI,CAACA,EAASD,CAAO,EACtG,MAAO,CACL,QAAAH,EACA,QAAAC,CACN,CACG,EA6JDiqE,GAAA,YAAAc,GAAQ,UAAG,CACT,UAAW7mE,KAAUxC,EAAA,KAAK4oE,IAAS,OAAM,EACnCpmE,EAAO,WACTA,EAAO,OAAM,CAGlB,EAlmBDj7B,GAfI0gG,GAeG,eAAe,IACtBlrE,EAhBIkrE,GAgBG78D,GAAe,IAAI,IAAI,CAAC8/C,GAAgBmR,GAAWmI,GAAatO,GAAiBqO,EAAe,EAAE,IAAI30F,GAAQ,CAACA,EAAK,YAAaA,CAAI,CAAC,CAAC,GAhBhJ,IAAM8kB,GAANuzE,2CA6pBA,MAAMmC,GAAN,MAAMA,EAAU,CAKd,YAAY,CACV,UAAAx5D,CACJ,EAAK,CA8BH7T,EAAA,KAAAstE,IAMAttE,EAAA,KAAAutE,IAYAvtE,EAAA,KAAAwtE,IAtDAxtE,EAAA,KAAAknD,GAAU,MACVlnD,EAAA,KAAAytE,GAAW,IAAI,KACfztE,EAAA,KAAA0tE,GAAY,IAAI,KAKd,KAAK,UAAY75D,CAClB,CACD,UAAU9L,EAAQ,CAChB,GAAI,CAAC9E,EAAA,KAAKikD,IAAS,CACjB/jD,EAAA,KAAK+jD,GAAUn/C,GACf,MACD,CACD,GAAI9E,EAAA,KAAKikD,MAAYn/C,EAAQ,CAC3B,GAAI9E,EAAA,KAAKwqE,IAAS,KAAO,EACvB,UAAW94F,KAAQsuB,EAAA,KAAKwqE,IAAS,OAAM,EACrC94F,EAAK,OAAM,EACXozB,EAAO,OAAOpzB,CAAI,EAGtBwuB,EAAA,KAAK+jD,GAAUn/C,EAChB,CACF,CACD,WAAW,aAAc,CACvB,OAAOvN,GAAO,KAAM,cAAe,IAAIrC,EAAe,CACvD,CAqCD,KAAKijC,EAAYuyC,EAAkB,GAAOC,EAAU,GAAO,CACzD,MAAM51F,EAAK2wB,GAAA0kE,GAAU3kE,IAAV,IACL/zB,EAAO0qB,EAAA,KAAKiuE,GAAAO,IAAL,WACPptB,EAAO4sB,GAAU,YAAY,cAAc,MAAM,EACvD14F,EAAK,OAAO8rE,CAAI,EAChB,MAAMriE,EAAOivF,GAAU,YAAY,cAAc,MAAM,EACvD5sB,EAAK,OAAOriE,CAAI,EAChB,MAAM0vF,EAAS,SAAS,KAAK,SAAS,IAAI91F,CAAE,GAC5CoG,EAAK,aAAa,KAAM0vF,CAAM,EAC9B1vF,EAAK,aAAa,gBAAiB,oBAAoB,EACnDuvF,GACF1qE,EAAA,KAAKyqE,IAAU,IAAI11F,EAAIoG,CAAI,EAE7B,MAAMi6E,EAAauV,EAAUvuE,EAAA,KAAKkuE,GAAAQ,IAAL,UAAqBttB,EAAMqtB,GAAU,KAC5DE,EAAMX,GAAU,YAAY,cAAc,KAAK,EACrD,OAAA14F,EAAK,OAAOq5F,CAAG,EACfA,EAAI,aAAa,OAAQ,IAAIF,CAAM,EAAE,EACrC,KAAK,iBAAiBn5F,EAAMymD,CAAU,EACtCn4B,EAAA,KAAKwqE,IAAS,IAAIz1F,EAAIrD,CAAI,EACnB,CACL,GAAAqD,EACA,WAAY,QAAQqgF,CAAU,GACpC,CACG,CACD,YAAYj9B,EAAY6yC,EAA6B,CACnD,MAAMj2F,EAAK2wB,GAAA0kE,GAAU3kE,IAAV,IACL/zB,EAAO0qB,EAAA,KAAKiuE,GAAAO,IAAL,WACPptB,EAAO4sB,GAAU,YAAY,cAAc,MAAM,EACvD14F,EAAK,OAAO8rE,CAAI,EAChB,MAAMriE,EAAOivF,GAAU,YAAY,cAAc,MAAM,EACvD5sB,EAAK,OAAOriE,CAAI,EAChB,MAAM0vF,EAAS,SAAS,KAAK,SAAS,IAAI91F,CAAE,GAC5CoG,EAAK,aAAa,KAAM0vF,CAAM,EAC9B1vF,EAAK,aAAa,gBAAiB,oBAAoB,EACvD,IAAI8vF,EACJ,GAAID,EAA6B,CAC/B,MAAMx0C,EAAO4zC,GAAU,YAAY,cAAc,MAAM,EACvD5sB,EAAK,OAAOhnB,CAAI,EAChBy0C,EAAS,SAAS,KAAK,SAAS,IAAIl2F,CAAE,GACtCyhD,EAAK,aAAa,KAAMy0C,CAAM,EAC9Bz0C,EAAK,aAAa,YAAa,mBAAmB,EAClD,MAAMn7B,EAAO+uE,GAAU,YAAY,cAAc,MAAM,EACvD5zC,EAAK,OAAOn7B,CAAI,EAChBA,EAAK,aAAa,QAAS,GAAG,EAC9BA,EAAK,aAAa,SAAU,GAAG,EAC/BA,EAAK,aAAa,OAAQ,OAAO,EACjC,MAAM0vE,EAAMX,GAAU,YAAY,cAAc,KAAK,EACrD5zC,EAAK,OAAOu0C,CAAG,EACfA,EAAI,aAAa,OAAQ,IAAIF,CAAM,EAAE,EACrCE,EAAI,aAAa,SAAU,MAAM,EACjCA,EAAI,aAAa,OAAQ,OAAO,EAChCA,EAAI,aAAa,YAAa,SAAS,EACvCA,EAAI,UAAU,IAAI,MAAM,CACzB,CACD,MAAMG,EAAOd,GAAU,YAAY,cAAc,KAAK,EACtD14F,EAAK,OAAOw5F,CAAI,EAChBA,EAAK,aAAa,OAAQ,IAAIL,CAAM,EAAE,EAClCI,GACFC,EAAK,aAAa,OAAQ,QAAQD,CAAM,GAAG,EAE7C,MAAME,EAAOD,EAAK,YAClB,OAAAx5F,EAAK,OAAOy5F,CAAI,EAChBD,EAAK,UAAU,IAAI,aAAa,EAChCC,EAAK,UAAU,IAAI,kBAAkB,EACrC,KAAK,iBAAiBz5F,EAAMymD,CAAU,EACtCn4B,EAAA,KAAKwqE,IAAS,IAAIz1F,EAAIrD,CAAI,EACnBqD,CACR,CACD,aAAaA,EAAIojD,EAAY,CAC3Bn4B,EAAA,KAAKyqE,IAAU,OAAO11F,CAAE,EACxB,KAAK,iBAAiBA,EAAIojD,CAAU,CACrC,CACD,iBAAiBizC,EAAajzC,EAAY,OACxC,GAAI,CAACA,EACH,OAEF,KAAM,CACJ,KAAAzmD,EACA,KAAAq7C,EACA,UAAAs+C,EACA,KAAAlwF,CACD,EAAGg9C,EACE5rD,EAAU,OAAO6+F,GAAgB,SAAWprE,EAAA,KAAKwqE,IAAS,IAAIY,CAAW,EAAIA,EACnF,GAAK7+F,EASL,IANImF,GACF0qB,EAAA,KAAKmuE,GAAAe,IAAL,UAAuB/+F,EAASmF,GAE9Bq7C,GACF3wB,EAAAjC,EAAAiwE,GAAUmB,GAAAC,IAAV,KAAArxE,EAAkB5tB,EAASwgD,GAEzBs+C,EAAW,CACb,KAAM,CACJ,UAAA/B,CACD,EAAG/8F,EACJ,SAAW,CAACuE,EAAW3C,CAAK,IAAK,OAAO,QAAQk9F,CAAS,EACvD/B,EAAU,OAAOx4F,EAAW3C,CAAK,CAEpC,CACD,GAAIgN,EAAM,CAER,MAAMswF,EADOl/F,EAAQ,WACI,WACzB6vB,EAAA,KAAKmuE,GAAAe,IAAL,UAAuBG,EAAatwF,EACrC,EACF,CACD,aAAapG,EAAI+4B,EAAO,CACtB,GAAIA,IAAU,KACZ,OAEF,MAAMp8B,EAAOsuB,EAAA,KAAKwqE,IAAS,IAAIz1F,CAAE,EAC5BrD,IAGLsuB,EAAA8N,EAAMm2C,IAAQ,OAAOvyE,CAAI,EACzBsuB,EAAA,KAAKwqE,IAAS,OAAOz1F,CAAE,EACvBirB,EAAA8N,EAAM08D,IAAS,IAAIz1F,EAAIrD,CAAI,EAC5B,CACD,OAAOqD,EAAI,CACTirB,EAAA,KAAKyqE,IAAU,OAAO11F,CAAE,EACpBirB,EAAA,KAAKikD,MAAY,OAGrBjkD,EAAA,KAAKwqE,IAAS,IAAIz1F,CAAE,EAAE,OAAM,EAC5BirB,EAAA,KAAKwqE,IAAS,OAAOz1F,CAAE,EACxB,CACD,SAAU,CACRmrB,EAAA,KAAK+jD,GAAU,MACf,UAAWvyE,KAAQsuB,EAAA,KAAKwqE,IAAS,OAAM,EACrC94F,EAAK,OAAM,EAEbsuB,EAAA,KAAKwqE,IAAS,QACdxqE,EAAA,KAAKyqE,IAAU,OAChB,CACH,EArMExmB,GAAA,YACAumB,GAAA,YACAC,GAAA,YACOhlE,GAAA,YAwBA8lE,GAAA,YAAAC,GAAO,SAACj/F,EAAS,CAAC0kB,EAAGO,EAAG5pB,EAAOR,CAAM,EAAG,CAC7C,KAAM,CACJ,MAAAw6B,CACD,EAAGr1B,EACJq1B,EAAM,IAAM,GAAG,IAAMpQ,CAAC,IACtBoQ,EAAM,KAAO,GAAG,IAAM3Q,CAAC,IACvB2Q,EAAM,MAAQ,GAAG,IAAMh6B,CAAK,IAC5Bg6B,EAAM,OAAS,GAAG,IAAMx6B,CAAM,GAC/B,EACDijG,GAAA,YAAAO,GAAU,UAAG,CACX,MAAM7kE,EAAMqkE,GAAU,YAAY,OAAO,EAAG,EAAG,EAAI,EACnD,OAAApqE,EAAA,KAAKikD,IAAQ,OAAOl+C,CAAG,EACvBA,EAAI,aAAa,cAAe,EAAI,EAC7BA,CACR,EACDukE,GAAA,YAAAQ,GAAe,SAACttB,EAAMqtB,EAAQ,CAC5B,MAAMptB,EAAW2sB,GAAU,YAAY,cAAc,UAAU,EAC/D5sB,EAAK,OAAOC,CAAQ,EACpB,MAAM2X,EAAa,QAAQyV,CAAM,GACjCptB,EAAS,aAAa,KAAM2X,CAAU,EACtC3X,EAAS,aAAa,gBAAiB,mBAAmB,EAC1D,MAAMiuB,EAActB,GAAU,YAAY,cAAc,KAAK,EAC7D,OAAA3sB,EAAS,OAAOiuB,CAAW,EAC3BA,EAAY,aAAa,OAAQ,IAAIb,CAAM,EAAE,EAC7Ca,EAAY,UAAU,IAAI,MAAM,EACzBtW,CACR,EACDmV,GAAA,YAAAe,GAAiB,SAAC/+F,EAAS4rD,EAAY,CACrC,SAAW,CAACzwD,EAAKyG,CAAK,IAAK,OAAO,QAAQgqD,CAAU,EAC9ChqD,IAAU,KACZ5B,EAAQ,gBAAgB7E,CAAG,EAE3B6E,EAAQ,aAAa7E,EAAKyG,CAAK,CAGpC,EAnCD4uB,EA5BIqtE,GA4BGmB,IAxBPxuE,EAJIqtE,GAIG3kE,GAAM,GAJf,IAAMtQ,GAANi1E,GA2NE,WAAW,kBAAoB,CAC7B,kBAAmBrb,EACvB,EAGwCn6E,GAAoB,eACbA,GAAoB,sBACfA,GAAoB,2BAC1BA,GAAoB,qBACfA,GAAoB,0BAC9BA,GAAoB,gBACrBA,GAAoB,eACpBA,GAAoB,eACvBA,GAAoB,YAClBA,GAAoB,cACxBA,GAAoB,UAClBA,GAAoB,YACzD,IAAI+2F,GAAyC/2F,GAAoB,oBAC9BA,GAAoB,UACVA,GAAoB,oBAC9BA,GAAoB,UAC1BA,GAAoB,IACZA,GAAoB,YACVA,GAAoB,sBAC5BA,GAAoB,cACxBA,GAAoB,UACZA,GAAoB,kBACvBA,GAAoB,eACrBA,GAAoB,cACNA,GAAoB,4BAC9BA,GAAoB,kBACnBA,GAAoB,mBACfA,GAAoB,wBAClCA,GAAoB,UACjBA,GAAoB,aAC5BA,GAAoB,KACVA,GAAoB,eAC1BA,GAAoB,SACvBA,GAAoB,MACHA,GAAoB,uBACjCA,GAAoB,UACvD,IAAIg3F,GAAiCh3F,GAAoB,YACbA,GAAoB,mBACjBA,GAAoB,sBAClCA,GAAoB,QACTA,GAAoB,mBAC1BA,GAAoB,aACvBA,GAAoB,UACVA,GAAoB,oBAC1BA,GAAoB,cACjBA,GAAoB,iBAClBA,GAAoB,mBAChCA,GAAoB,OACjBA,GAAoB,UACvD,IAAIi3F,GAA6Bj3F,GAAoB,QC1xsBrD,eAAek3F,GAAsBhoG,EAAM,CACzC,OAAO,IAAI,QAAQ,CAAC0d,EAASC,IAAW,CACtC,MAAM1c,EAAS,IAAI,WACnBA,EAAO,OAAS,IAAM,CACpByc,EAAQzc,EAAO,MAAM,CAC3B,EACIA,EAAO,QAAU0c,EACjB1c,EAAO,kBAAkBjB,CAAI,CACjC,CAAG,CACH,CCkBA,MAAMioG,GAA2BnlG,GAAiB,CAChD,OAAQ,CAAChD,GAA6B4F,GAAmBC,EAAiB,EAC1E,YAAa,2BAEb,iBAAkB,CACV,MAAE,IAAAC,CAAQ,SACX,kBAAQ,KAAK,OAAS,GAEpB,CACL,SAAUA,GAAOA,EAAI,MAAM,UAAU,EAEzC,EACA,mBAAoB,CACb,0BAAuBpG,GAAgB,SAAoBqG,GAAA,CAC1DA,EAAQ,OAASC,GAAM,OACzB,KAAK,SAAS,CACZ,SAAU,GACX,CACH,CACD,EACK,MAAA9E,EAAYiC,GAAS,YAAY,IAAI,EAC3CjC,EAAU,iBAAiB,WAAY,KAAK,eAAgB,EAAK,EACjEA,EAAU,iBAAiB,YAAa,KAAK,gBAAiB,EAAK,EACnEA,EAAU,iBAAiB,YAAa,KAAK,gBAAiB,EAAK,EACnEA,EAAU,iBAAiB,OAAQ,KAAK,WAAY,EAAK,CAC3D,EACA,sBAAuB,CACf,MAAAA,EAAYiC,GAAS,YAAY,IAAI,EAC3CjC,EAAU,oBAAoB,WAAY,KAAK,eAAgB,EAAK,EACpEA,EAAU,oBAAoB,YAAa,KAAK,gBAAiB,EAAK,EACtEA,EAAU,oBAAoB,YAAa,KAAK,gBAAiB,EAAK,EACtEA,EAAU,oBAAoB,OAAQ,KAAK,WAAY,EAAK,CAC9D,EACA,cAAcmM,EAAe,CAC3B,MAAMC,EAAaC,GAAgB,WACjC,KAAK,MAAM,IAAIxF,GAAKA,EAAE,eAAe,GAGjChC,EAAU,CACd,KAAMC,GAAM,UAAU,KACtB,cAAAqH,EACA,YAAa,SACb,WAAAC,EACA,WAAY,KAAK,MAAM,QAGzBE,GAAiB,qBAAqBzH,CAAO,CAC/C,EAEA,QAAS,CAEL,OAAAvG,EAAA,cAAC,OACC,GAAI,wBAA0B,KAAK,MAAM,QACzC,MAAO,CAAE,OAAQ,KAAK,MAAM,MAAO,EACnC,UAAWc,GACT,mCACA,KAAK,MAAM,QACX,CAAE,SAAU,CAAC,KAAK,MAAM,QAAS,CACnC,EACA,SAAS,KACTd,EAAA,cAAC,MAAI,WAAU,6DACbA,EAAA,cAAC,IAAE,WAAU,uCAAwC,GACpDA,EAAA,mBAAE,UAAU,4CAA4C,EACzDA,EAAA,cAAC,KAAG,WAAU,sCAAuC,YAAQ,EAC7DA,EAAA,cAAC,QAAM,qCAA8B,EACrCA,EAAA,cAAC,MAAI,WAAU,0BACbA,EAAA,cAAC4M,GAAA,CACC,MAAM,SACN,UAAU,SACV,SAAU,KAAK,sBACf,cAAe,KAAK,MAAM,eAE9B,EACA5M,EAAA,cAACwN,GAAA,CACC,QAAQ,uCACR,UAAU,iEAEd,EACAxN,EAAA,cAAC,MAAI,IAAG,UAAW,GACnBA,EAAA,cAAC,OACC,GAAG,WACH,eAAa,WACb,UAAU,gFACTA,EAAA,qBAAI,UAAU,6BACZA,EAAA,qBAAI,UAAU,8BACZ,CAAC,CAAC,KAAK,MAAM,UACZA,EAAA,cAACkN,GAAA,CACC,YAAa,KAAK,MAAM,YACxB,gBAAiB,KAAK,2BAG5B,CACF,EACAlN,EAAA,cAAC,OAAI,UAAU,0BACZ,IAAE,WAAU,+BAAgC,GAC7CA,EAAA,cAAC,MAAG,UAAU,0BAAyB,kBAAoB,EAC3DA,EAAA,cAAC,SAAM,UAAU,WAAU,iEAE3B,EACAA,EAAA,cAAC4M,GAAA,CACC,MAAM,gBACN,UAAU,SACV,SAAU,KAAK,sBACf,cAAe,KAAK,MAAM,eAE9B,CACF,EAGN,EAEA,0BAA0BzF,EAAO,CAC3B,KAAK,MAAM,uBACR,WAAM,sBAAsBA,CAAK,CAC1C,EAEA,WAAY,CACV,MACE,cAAe,SAAS,cAAc,MAAM,GAAK,CAAC,KAAK,MAAM,QAEjE,EAEA,eAAe1B,EAAG,CAChBA,EAAE,gBAAgB,EAClBA,EAAE,eAAe,CACnB,EAEA,YAAa,EACb,gBAAgBA,EAAG,CACjBA,EAAE,eAAe,EAEb,KAAK,gBAAkB,GAAK,aAAW,EAAE,SAAS,UAAU,CAClE,EAEA,gBAAgBA,EAAG,CACb,EAAE,KAAK,cAAgB,GAAK,aAAW,EAAE,YAAY,UAAU,CACrE,EAEA,WAAWA,EAAG,CACZA,EAAE,eAAe,EAEjB,KAAK,YAAc,EACjB,aAAW,EAAE,YAAY,UAAU,EAErC,MAAMb,EAAQ,MAAM,UAAU,MAAM,MAAMa,EAAE,aAAa,KAAK,EAC9D,YAAK,SAASb,CAAK,EACZ,EACT,EAEA,wBAAyB,CACvBiE,GAAsB,uBAAwB,EAAE,CAClD,EAEA,sBAAsBpD,EAAG,CACvB,KAAK,uBAAuB,EAC5B,MAAMwI,EAAaxI,EAAE,OACfb,EAAQ,MAAM,KAAKqJ,EAAW,KAAK,EAEpCrJ,EAAM,SAEX,KAAK,SAASA,CAAK,EACnBqJ,EAAW,MAAQ,GACrB,EAEA,MAAM,SAASrJ,EAAO,CACpB,MAAMsJ,EAAgBtJ,EAAM,OAC1B,KAAK,MAAM,cAAc,oBAGvB,GAAAsJ,EAAc,OAAS,EAAG,CAC5BhO,GAAgB,SAAS,CACvB,KAAMsG,GAAM,aACZ,gBAAiB0H,EAAc,OAChC,EAED+hB,GAAkB,SAAS,CAAC,CAAE,qBAAA24E,MAA4B,CACxD,qBAAsB,CACpB,QAAS,EACT,WAAY16F,EAAc,MAC5B,CACA,IAEFhO,GAAgB,SAAS,CACvB,KAAMC,GAAQ,uBACf,EAED,QAAS0oG,KAAyB36F,EAC5B,IACE26F,EAAsB,OAAS,kBACjC,MAAMC,GAAWD,CAAqB,EAEtC,MAAME,GAAaF,CAAqB,QAEnCzgG,EAAO,CACd4gG,GAA+BH,EAAsB,IAAI,EACjD,cAAM,yBAA0BzgG,CAAK,CAC/C,CAEJ,CACF,EACA,gBAAiB,CACR,QACT,CACF,CAAC,EAEDugG,GAAyB,aAAe,CACtC,cAAe,IAAIt6F,EACrB,EAEA,MAAM46F,GAAuB,MAAOJ,EAAuBK,IAAkB,CAC3E,MAAMC,EAA+B,MAAMC,GACzCF,GAAiBL,EACjB,CAAE,iBAAkB,GAAI,GAKpBQ,EAAW,CACf,KAHmBH,GAAiBL,EAIpC,gBAAiBM,EACjB,OAAQ,UACR,UAAWh8E,GAAU,EACrB,YAAa,UAAU,KAGnB,aAAAm8E,GAAG,OAAO,IAAID,CAAQ,EACrBA,CACT,EAEME,GAAsB,MAAOV,GAA0B,CAC3D,GAAIA,EAAsB,OAAS,cAAgBA,EAAsB,OAAS,aAAc,CACxF,MAAAW,EAAgB,MAAMC,GAAS,CACnC,KAAMZ,EACN,OAAQ,aACR,QAAS,EACV,EACM,WAAI,KAAK,CAACW,CAAa,EAAG,GAAGX,EAAsB,IAAI,OAAQ,CACpE,KAAM,aACP,CACH,CACO,OAAAA,CACT,EAEMC,GAAa,MAAOD,GAA0B,CAC5C,MAAAa,EAAU,MAAMhB,GAAsBG,CAAqB,EAE7D,IACFc,GAA6B,UAAY,qCAAqCC,EAAgB,4BAExF,MAAAC,EAAS,MAAMC,GAAqB,CAAE,KAAMJ,CAAA,CAAS,EAAE,QACvDK,EAAWF,EAAO,SAExB3pG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,aACZ,gBAAiBujG,CAAA,CAClB,EAED95E,GAAkB,SAAS,CAAC,CAAE,qBAAA24E,MAA4B,CACxD,qBAAsB,CACpB,QAAS,EACT,WAAYmB,CACd,CACA,IAEFlhG,GAAsB,aAAckhG,CAAQ,EAEtC,MAAAC,EAAY,SAAS,cAAc,QAAQ,EACjDA,EAAU,MAAM,QAAU,OACjB,cAAK,YAAYA,CAAS,EAC7B,MAAA9mG,EAAM8mG,EAAU,WAAW,IAAI,EAErC,QAASC,EAAU,EAAGA,GAAWF,EAAUE,IAAW,CACpD,MAAMliG,EAAO,MAAM8hG,EAAO,QAAQI,CAAO,EACnC9rE,EAAWp2B,EAAK,YAAY,CAAE,MAAO,EAAG,EAE9CiiG,EAAU,MAAQ7rE,EAAS,MAC3B6rE,EAAU,OAAS7rE,EAAS,OAE5B,MAAMp2B,EAAK,OAAO,CAChB,cAAe7E,EACf,SAAAi7B,EACA,WAAY,eACb,GAAE,QAEG,MAAA9O,EAAO,MAAM,IAAI,QAASjR,GAAY4rF,EAAU,OAAO5rF,EAAS,WAAW,CAAC,EAC5E8rF,EAAW,GAAGrB,EAAsB,IAAI,IAAIoB,CAAO,OACnDE,EAAU,IAAI,KAAK,CAAC96E,CAAI,EAAG66E,EAAU,CAAE,KAAM,YAAa,EAE1D,MAAAjB,GAAqBJ,EAAuBsB,CAAO,CAC3D,CACS,cAAK,YAAYH,CAAS,QAC5B5hG,EAAO,CACd4gG,GAA+BH,EAAsB,IAAI,EACjD,cAAM,wBAAyBzgG,CAAK,CAC9C,CACF,EAEM4gG,GAAkCkB,GAAa,CACnDhqG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,gBACb,EAEiBypB,GAAA,WAAW,gBAE7BA,GAAkB,SAAS,CAAC,CAAE,qBAAAm6E,MAA4B,CACxD,qBAAsB,CAAC,GAAGA,EAAsBF,CAAQ,CACxD,GAEJ,EAEMnB,GAAe,MAAOF,GAA0B,CAC9C,MAAAwB,EAAgB,MAAMd,GAAoBV,CAAqB,EAC/D,MAAAI,GAAqBJ,EAAuBwB,CAAa,CACjE,EC7UMC,GAAkBC,GACf,CACL,CACE,MAAO,YACP,UAAWn6E,GACX,QAAS,QACV,EACD,CACE,MAAO,cACP,UAAW,OAAO,WACd,OAAO,aAAa,qBAAuB,CAACm6E,EAC1C5B,GAEF6B,GACJ,QAAS,QACV,EACD,CACE,MAAO,YACP,UAAWrkG,GACX,QAAS,QACV,EACD,CACE,MAAO,SACP,UAAW2F,GACX,QAAS,QACV,EACD,CACE,MAAO,WACP,UAAWA,GACX,QAAS,UACV,EACD,CACE,MAAO,UACP,UAAWA,GACX,QAAS,SACV,EACD,CACE,MAAO,YACP,UAAWA,GACX,QAAS,WACV,EACD,CACE,MAAO,SACP,UAAWA,GACX,QAAS,QACV,CACL,EAAI,OAAO,CAAC,CAAE,QAAAnL,CAAS,IACnBA,IAAY,SAAWyvB,GAAe,SAAU,EAAG,EACvD,EAGMq6E,GAAkB,IAAM,CAC5B,MAAMF,EAAkBG,GAAY,SAAQ,EAAG,gBAI/C,OAFqBJ,GAAeC,CAAe,CAGrD,EC7DA,IAAII,GAEJ,MAAMhqG,GAAU,SAAUA,EAAS,CAC7B,OAAOT,GAAoB,KAI/BA,GAAgB,SAAS,CACvB,KAAMsG,GAAM,uBACZ,QAAA7F,CACJ,CAAG,CACH,EAEMiqG,GAAa,SAAU/oG,EAAO,CAC9B,OAAO3B,GAAoB,MAI/B,aAAayqG,EAAa,EAE1BA,GAAgB,WAAW,IAAM,CAC/BzqG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,mBACZ,YAAa3E,CACnB,CAAK,CACF,EAAE,GAAG,EACR,EAEegpG,GAAA,CACb,QAAAlqG,GACA,WAAAiqG,EACF,ECvBME,GAAa,CACjB,iBAAkB,CAChB,KAAM,CAAE,kBAAAv/F,EAAoB,IAAO,KAAK,MAExC,MAAO,CACL,kBAAAA,CACN,CACG,EAED,mBAAoB,CAClB,OAAO,iBAAiB,oBAAqB,KAAK,wBAAwB,EAC1E,OAAO,iBAAiB,UAAW,KAAK,aAAa,EAErD,KAAK,qBAAuBrL,GAAgB,SAASqG,GAAW,CAC9D,OAAO,sBAAsB,IAAM,CACjC,OAAQA,EAAQ,KAAI,CAClB,KAAKpG,GAAQ,WACX,KAAK,MACHoG,EAAQ,WACRA,EAAQ,gBACRA,EAAQ,uBACRA,EAAQ,wBACRA,EAAQ,iBACtB,EACY,MAEF,KAAKC,GAAM,qBACT,KAAK,aAAeD,EAAQ,QAExBA,EAAQ,mBACV,KAAK,iBACH,KAAK,iBAAmBA,EAAQ,kBAGpC,KAAK,aAAY,EACjB,MAEF,KAAKpG,GAAQ,uBACX,KAAK,MAAK,EACV,MAEF,KAAKA,GAAQ,qBACX,KAAK,SAAS,CAAE,qBAAsBoG,EAAQ,OAAS,GACvD,MAEF,KAAKC,GAAM,aACX,KAAKA,GAAM,aACX,KAAKrG,GAAQ,eACX,KAAK,SAAS,CAAE,QAAS,EAAO,GAChC,KACH,CACT,CAAO,CACP,CAAK,EAED,EAAE,MAAM,EACL,GAAG,UAAW,KAAK,iBAAiB,EACpC,GAAG,SAAU,KAAK,gBAAgB,EAErC,EAAEwD,GAAS,YAAY,IAAI,CAAC,EACzB,MAAM,CACL,KAAM,EACd,CAAO,EACA,GAAG,gBAAiB8B,GAAK,CACxB,KAAM,CAAE,sBAAAslG,EAAuB,aAAAC,GAAiB,KAAK,MAErD,GAAID,EACF,OAAAtlG,EAAE,eAAc,EAChBA,EAAE,yBAAwB,EAC1B,KAAK,wBAAuB,EAErB,GAGT,KAAK,SAAS,CAAE,MAAO,GAAO,aAAc,CAAE,EAAE,EAE5CulG,GACF,KAAK,YAAW,CAE1B,CAAO,EACA,GAAG,kBAAmB,IAAM,CAC3B9qG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,aACtB,CAAS,CACT,CAAO,EAEH,EAAE7C,GAAS,YAAY,IAAI,CAAC,EAAE,GAAG,iBAAkB,IAAM,CACvD,KAAK,SAAS,CAAE,MAAO,EAAM,EACnC,CAAK,CACF,EAED,sBAAuB,CACrBzD,GAAgB,WAAW,KAAK,oBAAoB,EAEpD,EAAE,MAAM,EACL,IAAI,UAAW,KAAK,iBAAiB,EACrC,IAAI,SAAU,KAAK,gBAAgB,EAEtC,OAAO,oBACL,oBACA,KAAK,wBACX,CACG,EAED,MAAO,CACL,EAAEyD,GAAS,YAAY,IAAI,CAAC,EAAE,MAAM,MAAM,CAC3C,EAED,OAAQ,CACN,KAAK,SAAS,KAAO,CAAE,aAAc,CAAE,GAAG,EAE1C,EAAEA,GAAS,YAAY,IAAI,CAAC,EAAE,MAAM,MAAM,CAC3C,EAED,MACElE,EACAwrG,EAAkB,CAAE,EACpBC,EACAC,EACA5/F,EAAoB,CAAE,EACtB,CACA,KAAM,CAAE,QAAAwlB,CAAO,EAAK,KAAK,MAKzB,GAJK,IAAI,MAAM,0BACbk6E,EAAgB,KAAK,QAAQ,EAG3Bl6E,EAAS,OAAO,KAAK,QAEzB,KAAK,SAAQ,EACb,KAAK,SACH,CAAC,CAAE,aAAcq6E,KAAsB,CACrC,MAAMC,EACJ9/F,EAAkBC,GAAwB,gBAAgB,GAAK,GACjE,MAAO,CACL,WAAY/L,EACZ,gBAAiB,GAAG,OAAOwrG,CAAe,EAC1C,uBAAAC,EACA,wBAAAC,EACA,kBAAA5/F,EACA,SAAU,KAAK,MAAM,qBACrB,aAAcA,EAAkB,aAChC,aACEA,EAAkBC,GAAwB,YAAY,GACtD4/F,EACF,oBAAqB,IAAI/8F,GAAyB,CAChD,eAAgBg9F,CAC5B,CAAW,CACX,CACO,EACD,IAAM,CACJ,KAAK,KAAI,CACV,CACP,CACG,EAED,mBAAmBC,EAAc3qG,EAAS,CACxC,KAAK,SAAS,CAAE,OAAQ2qG,CAAc,GACtCT,GAAc,QAAQlqG,CAAO,CAC9B,EAED,UAAW,CAET,OADqB8pG,KACD,OAAO,CAACpmG,EAAM6E,IAAW,CAC3C,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC/C,OAAIqiG,IACFlnG,EAAOA,EAAK,OAAOknG,EAAe,cAAe,IAE5ClnG,CACR,EAAE,CAAE,EACN,EAED,qBAAsB,SACpB,KAAM,CACJ,kBAAAkH,EAAoB,CAAE,EACtB,OAAQigG,CACd,EAAQ,KAAK,MAGHtiG,GAAS6tB,EADM0zE,KACOe,CAAS,IAAtB,YAAAz0E,EAAyB,UAClC00E,GAAoB30E,EAAA5tB,GAAA,YAAAA,EAAQ,YAAR,YAAA4tB,EAAoBtrB,GAAwB,0BAC9CD,EAAkBC,GAAwB,uBAAuB,GAElEigG,IACrB,KAAK,gBAAe,EAGtB,KAAK,YAAW,CACjB,EAED,wBAAwB/qG,EAAM,CACvB,KAAK,MAAM,aAAa,SAASA,CAAI,GACxC,KAAK,SAAS+vB,IAAc,CAC1B,aAAc,CAAC,GAAGA,EAAU,aAAc/vB,CAAI,CAC/C,EAAC,CAEL,EAED,yBAA0B,CACxB,KAAK,SAAS+vB,IAAc,CAC1B,sBAAuB,CAACA,EAAU,qBACnC,EAAC,CACH,EAED,4BAA6B,CAC3B,KAAK,mBAAkB,EAEvB,KAAK,SAAS,KAAO,CAAE,aAAc,CAAE,EAAE,sBAAuB,EAAO,EAAC,CACzE,EAED,oBAAoB/vB,EAAM,CACxBR,GAAgB,SAAS,CACvB,KAAMsG,GAAM,+BACZ,IAAK9F,EAAK,aAAeA,EAAK,IAC9B,QAASA,EAAK,OACpB,CAAK,EAED,MAAM6qG,EAAiB,KAAK,KAAK7qG,EAAK,OAAO,EAEzC6qG,GACFA,EAAe,WAAW7qG,CAAI,EAG5B,KAAK,MAAM,cACb,KAAK,SAAS+vB,IAEL,CAAE,aADMA,EAAU,aAAa,OAAOroB,GAASA,IAAU1H,CAAI,GAErE,EAGH,KAAK,YAAW,CACjB,EAED,4BAA6B,CAE3B,OADqB+pG,KACD,OAAO,CAACpmG,EAAM6E,IAAW,CAC3C,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC/C,OAAMqiG,GAAkBA,EAAe,QACrClnG,GAAQknG,EAAe,8BAElBlnG,CACR,EAAE,CAAC,CACL,EAED,cAAcqnG,EAAa,KAAK,MAAM,WAAYC,EAAgB,CAShE,GARA,KAAK,MAAK,EAGVd,GAAc,WAAW,KAAK,MAAM,uBAAuB,EAE3D,KAAK,eAAiB,EACtB,KAAK,iBAAmB,EAEpB,CAAC,KAAK,6BACR,OAGF3qG,GAAgB,gBAAgB,CAC9B,KAAMsG,GAAM,aACZ,gBAAiB,KAAK,2BAA4B,EAClD,GAAGmlG,CACT,CAAK,EAEoBlB,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC3CqiG,GACFA,EAAe,cACbG,EACAC,EACA,KAAK,mBACL,KAAK,qBACf,CAEA,CAAK,CACF,EAED,mBAAmB/rG,EAAMsJ,EAAQ,CAC/B,MAAM0iG,EAA6B,KAAK,6BAExC1rG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,gBACZ,KAAA5G,EACA,OAAAsJ,EACA,gBAAiB0iG,CACvB,CAAK,EAEG,EAAE,KAAK,iBAAmBA,IAC5B1rG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,YACZ,gBAAiBolG,EACjB,iBAAkB,KAAK,gBAC/B,CAAO,EAEoBnB,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAE7CqiG,GACA,OAAOA,EAAe,eAAkB,YAExCA,EAAe,cAAc,mBAAmB,CAE1D,CAAO,EAEJ,EAED,sBAAsBlmG,EAAS,CAC7B,MAAMumG,EAA6B,KAAK,6BAExC1rG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,aACZ,iBAAkB,EAAE,KAAK,gBAC/B,CAAK,EAEG,EAAE,KAAK,iBAAmBolG,IAC5B1rG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,YACZ,gBAAiBolG,EACjB,iBAAkB,KAAK,iBACvB,QAASvmG,GAAW,EAC5B,CAAO,EAEoBolG,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAE7CqiG,GACA,OAAOA,EAAe,eAAkB,YAExCA,EAAe,cAAc,eAAe,CAEtD,CAAO,EAEJ,EAED,mBAAoB,CACGd,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC3CqiG,GACFA,EAAe,MAAK,CAE5B,CAAK,EAEDrrG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,aAClB,CAAK,CACF,EAED,kBAAmB,CACIikG,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC3CqiG,GACFA,EAAe,QAAO,CAE9B,CAAK,EAEDrrG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,cAClB,CAAK,CACF,EAED,aAAc,CACZ,KAAK,SACH,CACE,aAAc,CAAE,EAChB,aAAc,EACf,EACD,IAAM,CACJ,KAAK,MAAK,EAEV,OAAO,sBAAsB,IAAM,CACjCtG,GAAgB,SAAS,CACvB,KAAMsG,GAAM,cACxB,CAAW,CACX,CAAS,EAED,KAAK,SAAQ,CACd,CACP,CACG,EAED,0BAA2B,CACzB,WAAW,KAAK,cAAe,GAAG,CACnC,EAED,cAAe,CACQikG,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC3CqiG,GACFA,EAAe,cAAa,CAEpC,CAAK,EAED,KAAK,SACH,CACE,aAAc,EACf,EACD,IAAM,CACJ,KAAK,KAAI,CACV,CACP,CACG,EAED,UAAW,CACYd,KACR,QAAQvhG,GAAU,CAC7B,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC3CqiG,GACFA,EAAe,MAAK,CAE5B,CAAK,CACF,EAED,0BAA0BpkG,EAAO,CAC/B,KAAK,SAAS,CACZ,aAAcA,CACpB,CAAK,CACF,EAED,eAAgB,CACd,MAAO,CACL,aAAc,OAAO,YACrB,YAAa,OAAO,UAC1B,CACG,EAED,eAAgB,CACd,KAAK,SAAS,KAAK,aAAa,CACjC,EAED,oBAAqB,CACnB,KAAM,CAAE,aAAA0kG,CAAY,EAAK,KAAK,MAETpB,KACR,OAAO,CAACpmG,EAAM6E,IAAW,CACpC,MAAMqiG,EAAiB,KAAK,KAAKriG,EAAO,OAAO,EAC/C,OACEqiG,GACEA,EAAe,OACjBA,EAAe,MAAM,OAAS,IAE9BA,EAAe,MAAQA,EAAe,MAAM,OAC1C7qG,GAAQ,CAACmrG,EAAa,SAASnrG,CAAI,CAC7C,GAEa2D,CACR,EAAE,CAAE,EACN,CACH,EAEAymG,GAAW,kBAAoB,CAC7B,kBAAmBzqG,GAAU,MAC/B,EC7cA,SAAwByrG,GAAmB,CACzC,MAAAlnG,EACA,eAAAmnG,EACA,kBAAAC,EACA,qBAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,EAAG,CAEC,OAAAnsG,EAAA,cAAC,MAAI,WAAU,OACb,EAAAA,EAAA,cAACmL,OAAkB,EACnBnL,EAAA,cAAC,MAAI,WAAU,2DACb,EAAAA,EAAA,cAAC,UACC,aAAW,SACX,UAAU,gCACV,eAAa,QACb,KAAK,SACL,QAASksG,CAAA,EAAe,UAGzBlsG,EAAA,qBAAI,UAAU,oBACb,EAAAA,EAAA,cAAC,KAAE,UAAU,8BACVwH,GAAW5C,EAAM,OAAQ,OAAO,EAAE,WACrC,EACCmnG,EAAe,OAAS,GACvB/rG,EAAA,cAAC,UACC,UAAU,sCACV,QAASmsG,CAAA,EACR3kG,GAAWukG,EAAe,OAAQ,OAAO,EACzC/rG,EAAA,sBAAK,UAAU,gCACbA,EAAA,mBAAE,UAAU,gCAAgC,EAC7CA,EAAA,cAAC,IAAE,WAAU,sCAAsC,CACrD,EAGN,EACAA,EAAA,cAAC,UACC,aAAW,aACX,UAAU,+CACV,SAAUgsG,GAAqB,CAACpnG,EAAM,OACtC,KAAK,SACL,QAASqnG,CAAA,EAAsB,KAGnC,EACF,CAEJ,CC/CA,SAAwBG,GAAoB,CAC1C,MAAAxnG,EACA,eAAAmnG,EACA,kBAAAC,EACA,qBAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,EAAG,CAEC,OAAAnsG,EAAA,cAAC,OAAI,UAAU,sGACZ,MAAI,WAAU,wCACZA,EAAA,mBAAE,UAAU,4BACV,EAAAwH,GAAW5C,EAAM,OAAQ,OAAO,EAAE,WACrC,EACCmnG,EAAe,OAAS,GACvB/rG,EAAA,cAAC,UACC,UAAU,+CACV,QAASmsG,CAAA,EACR3kG,GAAWukG,EAAe,OAAQ,OAAO,EACzC/rG,EAAA,sBAAK,UAAU,gCACbA,EAAA,mBAAE,UAAU,gCAAgC,EAC7CA,EAAA,cAAC,IAAE,WAAU,sCAAsC,CACrD,CAGN,GACCA,EAAA,cAAAmL,GAAA,IAAkB,EAClBnL,EAAA,qBAAI,UAAU,sBACb,EAAAA,EAAA,cAAC,UACC,aAAW,SACX,UAAU,yCACV,eAAa,QACb,KAAK,SACL,QAASksG,CAAA,EAAe,QAG1B,EAAAlsG,EAAA,cAAC,UACC,aAAW,aACX,UAAU,2DACV,SAAUgsG,GAAqB,CAACpnG,EAAM,OACtC,KAAK,SACL,QAASqnG,CAAA,EAAsB,KAGnC,EACF,CAEJ,CC5CA,SAASI,GAAa,CACpB,MAAAznG,EACA,YAAA0nG,EACA,iBAAAH,EACA,oBAAAI,EACA,kBAAAC,EACA,eAAAT,EACA,cAAAG,CACF,EAAG,CACD,KAAM,CAACF,EAAmBS,CAAoB,EAAIzhF,YAAS,EAAK,EAC1DihF,EAAuB5gF,eAAY,IAAM,CAC7CohF,EAAqB,EAAI,EACbH,IACZ,WAAW,IAAMG,EAAqB,EAAK,EAAG,GAAI,GACjD,CAACH,CAAW,CAAC,EACVI,EACJC,GAAe,cAAc,GAAKA,GAAe,cAAc,EAC3DC,EAAc,CAClB,MAAAhoG,EACA,eAAAmnG,EACA,kBAAAC,EACA,qBAAAC,EACA,cAAAC,EACA,iBAAAC,CAAA,EAIA,OAAAnsG,EAAA,cAAC,MAAI,WAAU,8CACb,EAAAA,EAAA,cAAC,OAAI,UAAU,yBACZ4E,EAAM,OAAS,GACd5E,EAAA,cAAC2E,GAAA,CACC,QAAQ,sBACR,MAAAC,EACA,gBAAiB,GACjB,iBAAAunG,EACA,oBAAAI,EACA,kBAAAC,EACA,eAAgB,IAGtB,EACEE,GAAY1sG,EAAA,cAAC8rG,GAAoB,IAAGc,CAAa,IAChD5sG,EAAA,cAAAosG,GAAA,CAAqB,GAAGQ,CAAA,CAAa,CAE1C,CAEJ,CAEAP,GAAa,UAAY,CACvB,MAAOhsG,GAAU,MACjB,YAAaA,GAAU,KAAK,WAC5B,iBAAkBA,GAAU,KAAK,WACjC,oBAAqBA,GAAU,KAAK,WACpC,kBAAmBA,GAAU,KAAK,WAClC,eAAgBA,GAAU,MAC1B,cAAeA,GAAU,KAAK,UAChC,ECzDA,MAAMwsG,GAAqB9sG,GAAA,CACzB,MAAM+sG,EAAe,CACnB,OAAQ/sG,EAAM,SAAW,WAAa,cACtC,OAAQ,WACR,OAAQ,MAAM,OAAO,KAAK,UAC1B,OAAQ,gBACR,SAAU,WACV,QAAS,UACT,UAAW,YACX,OAAQ,UAGJgtG,EAAyBpsG,GAAA,CAC7BkI,GAAsB,aAAc,GAAGikG,EAAansG,CAAO,CAAC,EAAE,GAGhE,uBACGqsG,GAAa,WAAU,aAAa,KAAK,UAAU,UAAS,IAC1DjtG,EAAM,WAAW,IAAI,CAAC,CAAE,QAAAY,EAAS,MAAA4gF,GAAS1C,IAAU,CAC7C,MAAAouB,EAAWltG,EAAM,eAAiB8+E,EAEtC,OAAA7+E,EAAA,cAAC,UACC,gBAAe,wBAA0BW,EACzC,aAAY,GAAGmsG,EAAansG,CAAO,CAAC,GACpC,gBAAessG,EACf,UAAWnsG,GAAW,UAAWH,EAAS,CAAE,OAAQssG,EAAU,EAC9D,IAAKtsG,EACL,KAAK,MACL,KAAK,SACL,QAAS,IAAM,CACPZ,EAAA,eAAe8+E,EAAOl+E,CAAO,EACnCosG,EAAYpsG,CAAO,CACrB,GACCmsG,EAAansG,CAAO,EAG1B,EACH,CAEJ,ECtCMkrG,MACH7rG,EAAA,cAAAktG,GAAA,CAAU,OAAQntG,EAAM,wBACtB,MAAI,WAAWe,GAAW,WAAYf,EAAM,OAAS,SAAW,QAAQ,GACtEC,EAAA,qBAAI,UAAU,oCACb,EAAAA,EAAA,cAAC,UACC,KAAK,SACL,UAAU,YACV,aAAW,QACX,QAAS,IAAMD,EAAM,QAAQ,GAE7BC,EAAA,cAAC,IAAE,WAAU,cAAe,EAC9B,EACAA,EAAA,cAAC,MAAI,WAAU,mCACb,EAAAA,EAAA,cAAC,KAAG,WAAU,mBACZ,EAAAA,EAAA,cAAC,OAAK,WAAU,oBACd,EAAAA,EAAA,cAAC,KAAE,UAAU,2BAA4B,GACzCA,EAAA,cAAC,IAAE,WAAU,gCAAiC,EAChD,EAAO,cAET,EACAA,EAAA,cAAC,IAAE,WAAU,gBACVD,EAAM,OAAO,OAAO,0EACvB,EACAC,EAAA,cAAC,KAAG,WAAU,2CAEV,EAAAD,EAAM,OAAO,IAAI,CAACqI,EAAO9F,IACtBtC,EAAA,oBAAG,IAAKsC,EAAI8F,EAAM,KAAM,UAAU,eAChCA,EAAM,IACT,CACD,CAEL,EACApI,EAAA,cAAC,UACC,KAAK,SACL,aAAW,aACX,UAAU,wDACV,QAASD,EAAM,kBAChB,YAED,CACF,CACF,CACF,CACF,EClDIotG,GAAoB,CACxB,OAAQ,CACN,OAAQ,EACR,MAAO,CACL,MAAO,OACP,OAAQ,MACT,EACD,OAAQ,CACN,OAAQ,EACT,EACD,OAAQ,CACN,OAAQ,EACT,CACF,EACD,QAAS,CACP,OAAQ,IACR,MAAO,CACL,MAAO,MACP,OAAQ,KACT,EACD,OAAQ,CACN,OAAQ,EACT,EACD,OAAQ,CACN,OAAQ,GACT,CACF,CACH,EAEMC,GAAkB,CACtB,cAAe,CACb,KAAM,CAAE,SAAU,CAAE,OAAAppG,CAAQ,GAAK,KAAK,MAChCqpG,EAAa,KAAK,mBAClBC,EAAcD,EAAW,OAAO,OAASA,EAAW,OAAO,OAC3DE,EAAqBvpG,EAAUA,EAASqpG,EAAW,OAAUC,EAEnE,KAAK,SAAS,CACZ,aAAcC,CACpB,CAAK,CACF,EAED,kBAAmB,CACjB,KAAM,CAAE,SAAU,CAAE,SAAAb,CAAU,GAAK,KAAK,MAExC,OAAOA,EAAWS,GAAkB,OAASA,GAAkB,OAChE,CACH","names":["Albums","url","callback","response","data","albums","backButton","props","React","ServiceHeader","builderDispatch","PrismUI","BackButton","PropTypes","countErrors","UrlLoaderUploadMixin","GenericPaginatedUploadMixin","formData","file","service","responseCode","spinner","classNames","JPEGExif","fileBuffer","scanner","orientation","idx","maxBytes","uint16","THUMB_MAX_HEIGHT","Preview","divStyle","Spinner","component","reader","onReaderLoaded","event","image","onImageLoaded","onImageError","convertBase64ToArrayBuffer","string","binary","length","bytes","i","buffer","degrees","reflectVertical","reflectHorizontal","canChangeAspectRatio","canvas","hRatio","vRatio","ratio","centerShift_x","centerShift_y","ctx","caption","deleteButton","FileThumbnail","DeleteButton","LazyThumbnail","createReactClass","debouncedOnWindowScroll","genericHelpers","ReactDOM","threshold","bounds","scrollTop","top","height","visible","UrlThumbnail","__publicField","img","memo","key","imageCaption","width","actionButton","albumCoverThumbnail","Thumbnails","files","renderFile","thumbnailType","AlbumCoverThumbnail","loginSection","handleLogin","showLoginOverlay","Store","photoStorageMessage","message","notLoggedIn","LoginSection","PhotoStorageMessage","e","SelectAllSection","moreButton","streamPhotos","photo","MoreButton","MyAlbumsAndTimelines","noPhotosMessage","DEFAULT_COVER_HEIGHT","DEFAULT_SELECT_ALL_HEIGHT","MyPhotosImport","FileSelectorMixin","FileClearingMixin","App","payload","WebUI","$body","NotLoggedIn","total","stream","coversHeight","selectAllHeight","componentHeight","NoPhotosMessage","StreamPhotos","thumbnails","album","a","b","selectedAlbum","albumContent","pluralizer","timelines","timelinesByDate","photoDateTaken","localDateFormat","date","dest","page","perPage","params","UrlBuilder","destPage","error","view","hideMenu","f","photos","existingFileIds","acc","photosToAdd","p","sendToGoogleAnalytics","fileIds","that","onAlbumLoaded","prevShowAlertState","source","element","BeethovenFrieze","root_url","generateServiceUrl","sendMessage","image_selected_callbacks","on_complete_callbacks","services","tray_image_removed_callbacks","on_album_entry_callbacks","MessageHandler","messageHandlers","messageReceived","onCompleteMessage","onImageSelectedMessage","onTrayImageRemoved","onAlbumEntry","prefix","onRecieved","image_selected_callback","len","on_complete_callback","tray_image_removed_callback","on_album_entry_callback","messageHandler","single_image_select","generateUrl","param","value","results","iFrame","this","PrintSizeSelector","context","sizeKey","DefaultsEvents","additionalOptions","LoaderAdditionalOptions","size","selectedSize","sizeOptions","Select","themeName","CloudImport","thumb","filename","originalKey","foreignUserId","dataKey","iframeUrl","ref","actionName","list","type","quality","binStr","arr","UploadButton","uniqueId","uploadTargetRadioButton","monthNames","defaultNewAlbumTitle","now","AlbumSelector","albumList","heading","newAlbumTitle","UploadTargetRadioButton","albumId","CustomText","textKey","className","text","LocalFileImportNative","eventCategory","eventLabel","UploadAnalytics","AnalyticsHandler","$fileInput","filteredFiles","deferred","appendFile","ImageUploadFileValidator","root","factory","module","modules","installedModules","__webpack_require__","moduleId","exports","name","getter","mode","ns","object","property","__extends","extendStatics","d","__","INVALID_BYTE","Coder","_paddingCharacter","out","c","left","s","paddingLength","op","haveBad","v0","v1","v2","v3","result","stdCoder","encode","decode","URLSafeCoder","_super","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF16","INVALID_UTF8","encodedLength","pos","chars","min","n1","n2","n3","__webpack_exports__","ScriptReceiverFactory","number","id","called","callbackWrapper","receiver","ScriptReceivers","Defaults","defaults","dependency_loader_DependencyLoader","options","self","request","runtime","callbacks","successCallback","wasSuccessful","cdn","protocol","DependenciesReceivers","Dependencies","urlStore","url_store","urlPrefix","urlObj","AuthRequestType","BadEventName","msg","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","status","xhr_auth","query","authOptions","authRequestType","xhr","headerName","dynamicHeaders","parsed","suffix","btoa","utob","fromCharCode","b64chars","cb_utob","cc","u","cb_encode","ccc","padlen","ord","Timer","set","clear","delay","abstract_timer","timers_clearTimeout","timer","timers_clearInterval","timers_OneOffTimer","timers_PeriodicTimer","Util","args","boundArguments","util","extend","target","sources","extensions","stringify","m","safeJSONStringify","arrayIndexOf","array","item","nativeIndexOf","l","objectApply","keys","_","values","apply","map","mapObject","filter","test","filterObject","flatten","any","collections_all","encodeParamsObject","buildQueryString","decycleObject","objects","paths","derez","path","nu","logger_Logger","defaultLoggingFunction","core_pusher","logger","jsonp","callbackName","document","script","callback_name","head","jsonp_auth","ScriptRequest","src","errorString","jsonp_request_JSONPRequest","getAgent","sender","useTLS","scheme","jsonp_timeline_jsonp","jsonp_timeline","getGenericURL","baseScheme","host","getGenericPath","queryString","ws","http","sockjs","callback_registry_CallbackRegistry","prefixedEventName","names","binding","dispatcher_Dispatcher","failThrough","eventName","metadata","transport_connection_TransportConnection","hooks","priority","closeEvent","state","transport_Transport","environment","WSTransport","httpConfiguration","streamingConfiguration","pollingConfiguration","xhrConfiguration","XHRStreamingTransport","XHRPollingTransport","Transports","transports","SockJSTransport","socket","xdrConfiguration","yes","XDRStreamingTransport","XDRPollingTransport","transports_transports","net_info_NetInfo","net_info_Network","assistant_to_the_transport_manager_AssistantToTheTransportManager","manager","transport","connection","openTimestamp","onOpen","onClosed","lifespan","Protocol","messageEvent","messageData","pusherEventData","pusherEvent","protocol_protocol","connection_Connection","channel","listeners","unbindListeners","listener","action","handshake_Handshake","timeline_sender_TimelineSender","timeline","channel_Channel","pusher","socketId","private_channel_PrivateChannel","members_Members","member","subscriptionData","memberData","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","presence_channel_PresenceChannel","authData","channelData","addedMember","removedMember","utf8","base64","encrypted_channel_EncryptedChannel","nacl","sharedSecret","cipherText","nonce","raw","connection_manager_ConnectionManager","Network","handshake","errorCallbacks","withErrorEmitted","newState","previousState","newStateDescription","channels_Channels","createChannel","errMsg","Factory","transport_manager_TransportManager","sequential_strategy_SequentialStrategy","strategies","minPriority","current","timeout","runner","tryNextStrategy","strategy","best_connected_ever_strategy_BestConnectedEverStrategy","connect","runners","allRunnersFailed","callbackBuilder","rs","abortRunner","websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy","usingTLS","info","fetchTransportCache","cacheSkipCount","startTimestamp","cb","flushTransportCache","storeTransportCache","getTransportCacheKey","storage","serializedCache","latency","delayed_strategy_DelayedStrategy","IfStrategy","trueBranch","falseBranch","branch","FirstConnectedStrategy","testSupportsStrategy","getDefaultStrategy","config","baseOptions","defineTransport","definedTransports","defineTransportStrategy","ws_options","wss_options","sockjs_options","timeouts","ws_manager","streaming_manager","ws_transport","wss_transport","sockjs_transport","xhr_streaming_transport","xdr_streaming_transport","xhr_polling_transport","xdr_polling_transport","ws_loop","wss_loop","sockjs_loop","streaming_loop","polling_loop","http_loop","http_fallback_loop","wsStrategy","default_strategy","transport_connection_initializer","http_xdomain_request_hooks","xdr","http_xdomain_request","MAX_BUFFER_LENGTH","http_request_HTTPRequest","method","chunk","unreadData","endOfLinePosition","State","autoIncrement","http_socket_HTTPSocket","randomNumber","randomString","getLocation","code","reason","getUniqueURL","getSendURL","wasClean","replaceHost","parts","session","separator","hostname","urlParts","max","http_socket","http_streaming_socket_hooks","http_streaming_socket","http_polling_socket_hooks","http_polling_socket","http_xhr_request_hooks","Constructor","http_xhr_request","HTTP","http_http","web_http_http","Runtime","PusherClass","initializeOnDocumentBody","documentProtocol","TimelineLevel","timeline_level","timeline_Timeline","level","sendfn","transport_strategy_TransportStrategy","failAttempt","connected","onInitialized","onError","serializedTransport","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabled","strategy_builder_UnsupportedStrategy","validateOptions","composeChannelQuery","dynamicParams","user_authenticator","channel_authorizer_composeChannelQuery","channel_authorizer","ChannelAuthorizerProxy","channelAuthorizerGenerator","deprecatedAuthorizerOptions","getConfig","opts","getEnableStatsConfig","getHttpHost","shouldUseTLS","getWebsocketHost","buildUserAuthenticator","buildChannelAuthorizer","getWebsocketHostFromCluster","cluster","userAuthentication","buildChannelAuth","channelAuthorization","watchlist_WatchlistFacade","watchlistEvent","flatPromise","res","rej","flat_promise","user_UserFacade","err","previous","ensure_subscribed","promise","setDone","pusher_Pusher","t","app_key","checkAppKey","getStrategy","internal","timelineSender","event_name","channelName","channel_name","ConnectionState","usePusherChannel","channelAuthUrl","pusherChannelRef","useRef","connectionStatus","setConnectionStatus","useState","prevConnectionStatusRef","setError","onStatusChangeSubscribers","addOnStatusChangeSubscriber","useCallback","fn","handleError","pusherError","useEffect","Pusher","generalError","subscriptionError","StatusBox","children","PusherConnectionStatus","errorMessage","statusClassName","isMinimumClientsConnected","connectedClientCount","minimumClients","MinimumConnectedClientsNotification","notificationMessage","onConnectedClientCountChange","setConnectedClientCount","pusherNotReady","PusherConnection","eventHandlers","minimumClientsMessage","eventNames","sizeInPixels","marginInPixels","backgroundColour","foregroundColour","QRCodeStylingOptions","uploadUrl","imageUrl","dotOptionsHelper","dotsOptions","dotOptions","r","n","o","v","w","x","M","S","A","C","h","g","y","k","q","O","D","z","B","I","E","L","R","N","placeholderImage","QrCode","QRCodeStyling","blobReader","convertPNGToDataURL","blob","setImgSrcToDataURL","raiseError","QrCodeUploading","fileCount","handleUploadingQrCodeButton","UploadFailureMessage","failedUploadCount","pluralize","buildMobileUploadURL","qrLinkedMobileUploader","prismItem","usePrismItemStore","uploaderConfigPath","fetchDesktopUploaderConfig","MyMobileImport","images","numberOfFiles","screenAndStyle","updatedChannelConfig","prevState","nextState","loaderServiceWasDisplayed","channelConfig","imageUploading","mobileUploaderUrl","loading","MobileImportWrapper","isActive","definition","obj","prop","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","AnnotationType","ColorPicker","DOMSVGFactory","DrawLayer","util_FeatureTest","GlobalWorkerOptions","util_ImageKind","InvalidPDFException","MathClamp","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","ResponseException","SignatureExtractor","SupportedImageMimeTypes","TextLayer","TouchManager","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getUuid","getXfaPageViewport","isDataScheme","isPdfFile","isValidExplicitDest","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","stopEvent","version","isNodeJS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationEditorPrefix","TextRenderingMode","AnnotationBorderStyleType","verbosity","setVerbosityLevel","getVerbosityLevel","warn","unreachable","assert","cond","_isValidProtocol","baseUrl","dots","stringToUTF8String","absoluteUrl","nonSerializable","BaseException","PasswordException","UnknownErrorException","details","missing","FormatError","bytesToString","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","stringToBytes","str","string32","objectFromMap","isLittleEndian","buffer8","isEvalSupported","platform","userAgent","_b","_a","hexNumbers","transform","minMax","temp","m1","m2","xt","yt","p1","p2","p3","p4","transpose","first","second","sx","sy","rect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","_getExtremum","getExtremum_fn","_getExtremumOnCurve","getExtremumOnCurve_fn","mt","tt","ttt","delta","sqrtDelta","a2","__privateAdd","NormalizeRegex","NormalizationMap","buf","AnnotationPrefix","_isValidExplicitDest","validRef","validName","zoom","argsLen","allowNull","arg","toBase64Util","fromBase64Util","SVG_NS","_PixelsPerInch","isValidFetchUrl","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","dims","topLeft","bottomRight","extraDelay","ii","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","StatTimer","outBuf","longest","start","end","input","__privateGet","_regex","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","getCurrentTransformInverse","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","widthStr","heightStr","pixelRatio","maxPixels","maxDim","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","_EditorToolbar","editor","_focusIn","_focusOut","_addListenersToElement","_addDeleteButton","_divider","_toolbar","_colorPicker","_editor","_buttons","_altText","_signatureDescriptionButton","_l10nRemove","editToolbar","signal","_pointerDown","pointerDown_fn","buttons","position","addDeleteButton_fn","altText","button","addListenersToElement_fn","divider_get","colorPicker","signatureManager","description","focusIn_fn","focusOut_fn","editorType","_uiManager","divider","EditorToolbar","HighlightToolbar","uiManager","_render","_getLastPoint","_addHighlightButton","parent","boxes","isLTR","getLastPoint_fn","render_fn","addHighlightButton_fn","lastY","lastX","box","bindEvents","IdManager","_id","__privateWrapper","_ImageManager","_get","_baseId","_cache","svg","lastModified","get_fn","blobPromise","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","CommandManager","maxSize","_commands","_locked","_maxSize","_position","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","_serialize","isMac","isMacKey","serialize_fn","bubbles","checker","_ColorManager","rgb","RGB","ColorManager","_AnnotationEditorUIManager","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_getAnchorElementForSelection","_getLayerForTextLayer","_displayHighlightToolbar","_selectionChange","_onSelectEnd","_addSelectionListener","_addFocusManager","_removeFocusManager","_addKeyboardManager","_removeKeyboardManager","_addCopyPasteListeners","_removeCopyPasteListeners","_addDragAndDropListeners","_dispatchUpdateStates","_dispatchUpdateUI","_enableAll","_disableAll","_addEditorToLayer","_lastSelectedEditor","_isEmpty","_selectEditors","_abortController","_activeEditor","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_copyPasteAC","_currentDrawingSession","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_highlightToolbar","_idManager","_isEnabled","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_missingCanvases","_mlManager","_mode","_selectedEditors","_selectedTextNode","_signatureManager","_pageColors","_showAllStates","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_updateModeCapability","evt","addSelectionListener_fn","addDragAndDropListeners_fn","addKeyboardManager_fn","proto","arrowChecker","textInputChecker","_self","el","small","big","layer","_c","_d","_e","_f","_g","_h","ac","pair","firstTime","pageNumber","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","textLayer","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","isNoneMode","onSelectEnd_fn","activeElement","lastEditor","lastActiveElement","addCopyPasteListeners_fn","removeKeyboardManager_fn","removeCopyPasteListeners_fn","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","addEditorToLayer_fn","selectEditors_fn","isEditing","addFocusManager_fn","dispatchUpdateStates_fn","isEmpty_fn","removeFocusManager_fn","types","dispatchUpdateUI_fn","pageIndex","editId","isFromKeyboard","disableAll_fn","enableAll_fn","updateButton","mustWait","annotationElementId","lastSelectedEditor_get","ed","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","range","annotation","editorId","annotationId","currentLayer","displayHighlightToolbar_fn","selectionChange_fn","activeLayer","pointerup","promises","_AltText","_label","_setState","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","l10n","label","onClick","label_get","setState_fn","guessedText","visibility","badge","isForCopying","decorative","textWithDisclaimer","cancel","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","_onTouchStart","_onTouchMove","_onTouchEnd","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_pointerDownAC","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","onTouchStart_fn","pointerDownAC","cancelPointerDown","opt","onTouchMove_fn","onTouchEnd","onTouchEnd_fn","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","_AnnotationEditor","parameters","_translate","_getRotationMatrix","_createResizers","_resizerPointerdown","_resize","_addResizeToUndoStack","_resizerPointermove","_touchPinchStartCallback","_touchPinchCallback","_touchPinchEndCallback","_selectOnPointerEvent","_setUpDragSession","_addFocusListeners","_resizerKeydown","_resizerBlur","_resizerFocus","_setResizerTabIndex","_stopResizing","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_keepAspectRatio","_resizersDiv","_lastPointerCoords","_savedDimensions","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","stopResizing_fn","baseX","baseY","translate_fn","bx","by","_borderLineWidth","_rotatePoint","rotatePoint_fn","parentScale","widthPercent","heightPercent","editToolbarDiv","addFocusListeners_fn","touchPinchStartCallback_fn","touchPinchCallback_fn","touchPinchEndCallback_fn","setUpDragSession_fn","selectOnPointerEvent_fn","shiftX","shiftY","focus","bottom","right","innerHeight","innerWidth","_angle","createResizers_fn","boundResizerKeydown","resizerKeydown_fn","boundResizerBlur","resizerBlur_fn","resizerFocus_fn","firstPosition","nextFirstPosition","child","setResizerTabIndex_fn","resizerPointermove_fn","aspectRatio","content","firstChild","angle","getRotationMatrix_fn","classes","resizerPointerdown_fn","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","addResizeToUndoStack_fn","resize_fn","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","isSelected","hasDraggingStarted","cancelDrag","pointerId","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","_setModified","_modified","_modifiedIds","_storage","defaultValue","modified","entry","val","setModified_fn","PrintAnnotationStorage","hash","transfer","hasBitmap","stats","typeToEditor","editorStats","counters","count","ids","_serializable","clone","FontLoader","ownerDocument","styleElement","_systemFonts","nativeFontFace","rule","styleSheet","disableFontFace","_inspectFont","loadedName","fontFace","font","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","remove","insert","chunk1","chunk2","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","translatedData","inspectFont","css","objs","character","objId","cmds","CallbackKind","StreamKind","onFn","wrapReason","sourceName","targetName","comObj","_onMessage","_createStreamSink","_processStreamMessage","_deleteStreamController","_messageAC","onMessage_fn","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","processStreamMessage_fn","createStreamSink_fn","streamSink","lastDesiredSize","streamController","deleteStreamController_fn","dataReason","BaseCanvasFactory","enableHWA","_enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","_hcmCache","_defs","_createTables","_createUrl","_addLuminosityConversion","_addGrayConversion","_createFilter","_appendFeFunc","_addTransferMapConversion","_addTransferMapAlphaConversion","_getRGB","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","tableR","tableG","tableB","createTables_fn","createUrl_fn","createFilter_fn","addTransferMapConversion_fn","hcmCache_get","fgRGB","getRGB_fn","bgRGB","defs_get","table","addGrayConversion_fn","getSteps","tableA","addTransferMapAlphaConversion_fn","addLuminosityConversion_fn","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","j","mapR","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","appendFeFunc_fn","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","colorStop","owner","inverse","pathType","pattern","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","cssColor","matrix","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","mask","sum","steps","p0","pp","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","_restoreInitialState","_drawFilter","_getScaledPath","fallback","transparency","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","restoreInitialState_fn","cache","drawFilter_fn","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","intent","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","clip","old","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","strokeColor","needRestore","newPath","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","getScaledPath_fn","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","lineWidth","glyph","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","inv","group","currentCtx","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","imgToPaint","tag","clipBox","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","_port","_src","Metadata","parsedData","_metadataMap","_data","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","_isDisplay","_isPrint","_userSet","_visible","print","userSet","OptionalContentConfig","_evaluateVisibilityExpression","_cachedGetHash","_groups","_initialHash","_order","on","off","evaluateVisibilityExpression_fn","preserveRB","rbGroup","otherId","operator","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","loaded","found","rangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","match","iter","quot","part","quotindex","extvalue","encodingend","charset","hex","createHeaders","isHttp","httpHeaders","headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","NetworkManager","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","fullRequestXhrId","fullRequestXhr","rawResponseHeaders","urlRegex","parseUrlOrPath","sourceUrl","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","fs","stat","readableStream","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","_TextLayer","textContentSource","_processItems","_appendText","_layout","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_ensureMinFontSizeComputed","ensureMinFontSizeComputed_fn","_pendingTextLayers","isWindows","isFirefox","pump","processItems_fn","onBefore","_getCtx","getCtx_fn","layout_fn","abortEx","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","items","textDivs","textContentItemsStr","appendText_fn","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","_getAscent","getAscent_fn","scaleFactorStr","shouldScaleText","absScaleX","absScaleY","br","_ensureCtxFont","ensureCtxFont_fn","lang","family","cached","cachedAscent","metrics","ascent","descent","XfaText","xfa","output","walk","node","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","task","PDFDocumentLoadingTask","getUrlProp","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","getFactoryUrlProp","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","workerParams","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","WorkerTransport","isRefProxy","isNameProxy","_PDFDocumentLoadingTask","PDFDocumentProxy","pdfInfo","keepLoadedFonts","PDFPageProxy","pageInfo","_tryCleanup","_pendingCleanup","PDFObjects","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","intentPrint","complete","internalRenderTask","tryCleanup_fn","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","curCacheKey","curIntentState","renderTasks","LoopbackPort","_listeners","_deferred","rmAbort","onAbort","_PDFWorker","port","_resolve","_workerPorts","resolve_fn","_isWorkerDisabled","_mainThreadWorkerMessageHandler","mainThreadWorkerMessageHandler_get","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","_fakeWorkerId","workerHandler","cachedPort","__vitePreload","otherUrl","base","other","wrapper","loadingTask","_cacheSimpleMethod","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","exportedData","exportedError","imageRef","pageProxy","imageData","cachedPromise","cacheSimpleMethod_fn","refStr","INITIAL_DATA","_ensureObj","_objs","ensureObj_fn","RenderTask","_internalRenderTask","separateAnnots","_InternalRenderTask","useRequestAnimationFrame","_rAF","_canvasInUse","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","html","storedData","option","linkService","attributes","isHTMLAnchorElement","rootHtml","isNotForRichText","rootDiv","stack","childHtml","DEFAULT_TAB_INDEX","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","_setRectEdited","_updates","_hasBorder","_popupElement","titleObj","contentsObj","richText","setRectEdited_fn","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","styleName","colorType","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popup","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","_setInternalLink","_bindAttachment","_bindSetOCGState","link","isBound","bindAttachment_fn","bindSetOCGState_fn","destination","setInternalLink_fn","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","valueGetter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","blurListener","formattedValue","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","index","displayValue","selectChild","indices","change","elements","PopupElement","elementIds","modificationDate","parentRect","open","_html","_fontSize","_fontColor","_makePopupContent","_keyDown","_setPosition","_toggle","_show","_hide","_boundKeyDown","keyDown_fn","_boundHide","hide_fn","_boundShow","show_fn","_boundToggle","toggle_fn","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_rect","_richText","_titleObj","_wasVisible","baseColor","header","title","html_get","contents","dir","lines","line","popupContent","makePopupContent_fn","fontSize_get","fontColor_get","popupLines","lineAttributes","setPosition_fn","useParentRect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","popupRef","polyline","_getTransform","_polylinesGroupElement","_polylines","inkLists","getTransform_fn","thickness","_download","_trigger","trigger","download_fn","_AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_appendElement","_setAnnotationCanvasMap","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","annotations","popupToElements","elementParams","isPopupAnnotation","rendered","appendElement_fn","setAnnotationCanvasMap_fn","contentElement","ariaAttributes","editableAnnotation","EOL_PATTERN","_FreeTextEditor","_updateFontSize","_updateColor","_extractText","_setEditorDimensions","_setContent","_serializeContent","_hasElementChanged","_content","_editorDivId","_editModeAC","updateFontSize_fn","updateColor_fn","savedText","newText","extractText_fn","setText","setContent_fn","setEditorDimensions_fn","posX","posY","paste","_deserializeContent","deserializeContent_fn","startContainer","startOffset","bufferBefore","bufferAfter","_getNodeContent","getNodeContent_fn","newRange","beforeLength","textPosition","padding","serializeContent_fn","hasElementChanged_fn","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","_FreeDrawOutliner","scaleFactor","innerMargin","_getLastCoords","_toSVGPathTwoPoints","_toSVGPathStart","_toSVGPathEnd","_getOutlineTwoPoints","_getOutlineStart","_getOutlineEnd","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN","diffX","diffY","diffD","K","nX","nY","thX","thY","toSVGPathTwoPoints_fn","toSVGPathEnd_fn","toSVGPathStart_fn","outline","FreeDrawOutline","last","getOutlineTwoPoints_fn","getOutlineEnd_fn","getOutlineStart_fn","_MIN_DIFF","getLastCoords_fn","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_computeMinMax","_outline","computeMinMax_fn","outliner","lastPointX","lastPointY","ltrCallback","HighlightOutliner","_getOutlines","_binarySearch","_insert","_remove","_breakEdge","_lastPoint","_verticalEdges","_intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","breakEdge_fn","insert_fn","remove_fn","getOutlines_fn","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch_fn","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_ColorPicker","_getDropdownRoot","_colorSelect","_openDropdown","_isDropdownVisible","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","openDropdown_fn","swatch","dropdown","getDropdownRoot_fn","colorSelect_fn","isDropdownVisible_get","_HighlightEditor","_createOutlines","_createFreeOutlines","_updateThickness","_changeThickness","_cleanDrawLayer","_addToDrawLayer","_keydown","_setCaret","_getRotation","_serializeBoxes","_serializeOutlines","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_opacity","_outlineId","_text","_methodOfCreation","createFreeOutlines_fn","addToDrawLayer_fn","createOutlines_fn","updateThickness_fn","toolbar","getRotation_fn","cleanDrawLayer_fn","mustBeSelected","drawLayer","_rotateBbox","rotateBbox_fn","keydown_fn","highlightDiv","direction","setCaret_fn","_endHighlight","endHighlight_fn","_highlightMove","highlightMove_fn","opacity","clipPathId","serializeBoxes_fn","serializeOutlines_fn","outlinerForOutline","highlightOutlines","highlightId","extraThickness","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness_fn","HighlightEditor","DrawingOptions","_svgProperties","_DrawingEditor","_createDrawOutlines","_createDrawing","_convertToParentSpace","_convertToDrawSpace","_updateBbox","_rotateBox","_drawOutlines","_mustBeCommitted","createDrawOutlines_fn","p1Keys","_options","propertyName","_currentDraw","_drawingOptions","savedValue","setter","updateBbox_fn","convertToDrawSpace_fn","rotateBox_fn","_x","_y","drawDiv","_parentWidth","_parentHeight","pointerType","_currentPointerType","_currentDrawingAC","_currentPointerId","_currentPointerIds","_currentMoveTimestamp","_currentDrawingOptions","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","createDrawing_fn","convertToParentSpace_fn","pW","pH","parentRotation","DrawingEditor","InkDrawOutliner","_normalizePoint","_lines","_lastSVGPath","_lastIndex","InkDrawOutline","normalizePoint_fn","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_getMarginComponents","_getBBoxWithNoMargin","_computeBbox","_currentRotation","_parentScale","computeBbox_fn","serializedLines","serializedPoints","getBBoxWithNoMargin_fn","rescaleFn","newLines","oldMarginX","oldMarginY","getMarginComponents_fn","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","parentDimensions","newParentWidth","newParentHeight","margin","InkDrawingOptions","viewerParameters","_InkEditor","_drawId","stroke","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","_toUint8","toUint8_fn","histogram","_getHistogram","getHistogram_fn","_guessThreshold","guessThreshold_fn","contourList","_findContours","findContours_fn","_getGrayPixels","getGrayPixels_fn","_bilateralFilter","bilateralFilter_fn","_PARAMETERS","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","_douglasPeucker","douglasPeucker_fn","newPoints","minDiff","maxDiff","outlinesLength","dx","bufferType","headerLength","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","_neighborIndexToId","neighborIndexToId_fn","i0","_neighborIdToIndex","_clockwiseNonZero","clockwiseNonZero_fn","kk","shiftI","shiftJ","_counterClockwiseNonZero","counterClockwiseNonZero_fn","nbd","lnbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","_douglasPeuckerHelper","douglasPeuckerHelper_fn","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","center","norm","neighbour","spos","originalBitmap","prevWidth","prevHeight","isteps","grayImage","SignatureOptions","DrawnSignatureOptions","_SignatureEditor","_isExtracted","_description","_signatureData","_signatureUUID","hasDescriptionStats","_isCopy","uuid","heightInPage","outlineData","fontInfo","SignatureEditor","StampEditor","_getBitmapFetched","_getBitmapDone","_getBitmap","_createCanvas","_scaleBitmap","_drawBitmap","_serializeBitmap","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_missingCanvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","hasAltTextStats","updateAltTextData","getBitmap_fn","createCanvas_fn","bitmapId","drawBitmap_fn","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap_fn","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","serializeBitmap_fn","changes","area","prevData","getBitmapFetched_fn","fromId","getBitmapDone_fn","MAX_RATIO","toUrl","isSamePageIndex","isSameAltText","_AnnotationEditorLayer","annotationLayer","_textLayerPointerDown","_currentEditorType","_createNewEditor","_getCenterPoint","_cleanup","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","editorTypes","cleanup_fn","classList","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","textLayerPointerDown_fn","currentEditorType_get","getCenterPoint_fn","createNewEditor_fn","isCentered","currentMode","relatedTarget","oldRotation","_DrawLayer","_createSVG","_createClipPath","_updateProperties","_mapping","_toUpdate","isPathUpdatable","hasClip","createSVG_fn","pathId","createClipPath_fn","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","updateProperties_fn","_setBox","setBox_fn","pathElement","clipPathUse","__webpack_exports__GlobalWorkerOptions","__webpack_exports__getDocument","__webpack_exports__version","readFileAsArrayBuffer","LocalFileImportIndexedDB","imagesUploadProgress","uncompressedImageFile","processPDF","processImage","dispatchAndDisplayFailedUpload","processFileAndUpload","processedFile","compressedImageForThumbnails","compressImage","fileData","db","convertHEICIfNeeded","convertedBlob","heic2any","pdfData","pdfjsLib.GlobalWorkerOptions","pdfjsLib.version","pdfDoc","pdfjsLib.getDocument","numPages","canvasPDF","pageNum","fileName","newFile","failedImagesUploaded","convertedFile","computeSources","isSafariPrivate","LocalFileImport","getImageSources","useGenStore","notifyTimeout","clickEvent","notifications","LoaderBase","showUploadErrorsModal","showFailures","excludeServices","callToActionButtonText","callToActionButtonEvent","prevTargetAlbum","extraFileTypes","source_index","implementation","sourceIdx","sourceAutoUploads","upload_url","additionalData","totalNumberOfFilesToUpload","uploadErrors","MobileLoaderFooter","brokenPreviews","addPhotosDisabled","handleAddPhotosClick","onCancelClick","onErrorIconClick","DesktopLoaderFooter","LoaderFooter","onAddImages","onImagePreviewError","onRemoveThumbnail","setAddPhotosDisabled","isMobile","ScreenAndStyle","footerProps","LoaderNav","serviceTitle","handleClick","ButtonRibbon","selected","FocusTrap","LOADER_DIMENSIONS","LoaderSizeMixin","dimensions","fixedHeight","modalWindowHeight"],"sources":["../../../client/src/javascripts/customer_pages/_photo-loader/album-import/albums.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/back-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/service-header.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/url-loader-upload-mixin.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/spinner.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/jpeg-exif.js","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/preview.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/delete-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/file-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/lazy-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/url-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/album-cover-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/thumbnails.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/login-section.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/photo-storage-message.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/not-logged-in.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/select-all-section.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/more-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/stream-photos.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/my-albums-and-timelines.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/no-photos-messgae.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/my-photos-import.jsx","../../javascripts/libs/beethoven-frieze.js","../../../client/src/javascripts/customer_pages/_photo-loader/print-size-selector.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/cloud-import.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/local-file-resize.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/upload-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/upload-target-radio-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/default-new-album-title.js","../../../client/src/javascripts/customer_pages/_photo-loader/album-selector.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/custom-text.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/local-file-import.jsx","../../../node_modules/pusher-js/dist/web/pusher.js","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/use-pusher-channel.js","../../../client/src/javascripts/customer_pages/_mobile-uploader/status-box.jsx","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/pusher-connection-status.jsx","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/minimum-connected-clients-notification.jsx","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/index.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/qr-code-styling-options.js","../../../node_modules/qr-code-styling/lib/qr-code-styling.js","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/qr-code.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/spinner.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/qr-uploading.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/upload-failure-message.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/desktop-uploader-config.js","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import.jsx","../../../node_modules/pdfjs-dist/build/pdf.mjs","../../../client/src/javascripts/customer_pages/_utils/readFileAsArrayBuffer.js","../../../client/src/javascripts/customer_pages/_photo-loader/local-file-import-indexeddb.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/image-sources.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/notifications.js","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/loader-base.js","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-loader-footer.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/desktop-loader-footer.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-footer.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-nav.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/upload-errors.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/loader-size-mixin.js"],"sourcesContent":["class Albums {\n  constructor(url) {\n    this._url = url;\n    this._callbacks = [];\n  }\n\n  load(callback) {\n    if (this.loaded) {\n      // we already have the data,\n      // we can just return immediately.\n      callback(this.data);\n      return;\n    }\n\n    if (!this.fetching) {\n      fetch(this._url, {\n        credentials: 'same-origin',\n      })\n        .then((response) => response.json())\n        .then((data) => this.resolveCallbacks(data));\n    }\n\n    this.addCallback(callback);\n  }\n\n  get data() {\n    return this._data || [];\n  }\n\n  set data(data) {\n    this._data = data;\n  }\n\n  get loaded() {\n    return !!this._data;\n  }\n\n  get fetching() {\n    return this._callbacks.length > 0;\n  }\n\n  addCallback(callback) {\n    this._callbacks.push(callback);\n  }\n\n  resolveCallbacks(data) {\n    this.data = data;\n\n    this._callbacks\n      .filter((callback) => typeof callback === 'function')\n      .forEach((callback) => callback(data));\n\n    this._callbacks = [];\n  }\n}\n\n\nexport default new Albums('/account/albums.json');\n","import React from 'react';\n\nconst backButton = props => (\n  <button\n    className=\"back header-btn\"\n    aria-label=\"Back\"\n    onClick={props.onBackClick}\n  >\n    <i className=\"skinny-icon arrow-left\" />\n  </button>\n);\n\nexport default backButton;\n","\nimport React      from 'react';\nimport PropTypes  from 'prop-types';\nimport BackButton from '../utils/back-button';\nimport { builderDispatch, PrismUI } from \"../../_utils/ui\";\n\nclass ServiceHeader extends React.Component {\n  constructor(props) {\n    super();\n    this.onBackClick = props.onBackClick;\n    this.title = props.title;\n  }\n\n  componentDidMount() {\n    builderDispatch.dispatch({\n      type: PrismUI.CLOUD_SERVICE_HEADER,\n      mounted: true\n    });\n  }\n\n  componentWillUnmount() {\n    builderDispatch.dispatch({\n      type: PrismUI.CLOUD_SERVICE_HEADER,\n      mounted: false\n    });\n  }\n\n  render() {\n    return(<div className=\"modal-header justify-content-center align-items-center fixed-top border-0 service-header\">\n      <BackButton onBackClick={this.onBackClick} />\n      <div className=\"header-title\">\n        <span className=\"text-truncate\">{this.title}</span>\n      </div>\n    </div>);\n  }\n}\n\nServiceHeader.propTypes = {\n  onBackClick: PropTypes.func.isRequired,\n  title: PropTypes.string.isRequired\n};\n\nexport default ServiceHeader;\n","import GenericPaginatedUploadMixin from './generic-paginated-upload-mixin';\n\nconst countErrors = {};\n\nconst UrlLoaderUploadMixin = {\n  mixins: [GenericPaginatedUploadMixin],\n\n  _buildFormData(formData, file) {\n    formData.append('url', file.url);\n    formData.append('name', file.filename || file.title);\n    if (file.foreignUserId) {\n      formData.append('foreign_user_id', file.foreignUserId);\n    }\n  },\n\n  saveErrors(service, responseCode) {\n    if (responseCode > 399 && responseCode < 600) {\n      if (responseCode === 400) {\n        countErrors.tooManyRequests = service;\n      }\n\n      countErrors[service] = countErrors[service] && countErrors[service] > 0 ? countErrors[service] + 1 : 1;\n    }\n  },\n\n  reachedErrorLimit(service) {\n    return countErrors[service] > 100;\n  },\n\n  makesTooManyRequests(service) {\n    return countErrors.tooManyRequests === service;\n  },\n};\n\nexport default UrlLoaderUploadMixin;\n","import React      from 'react';\nimport classNames from 'classnames';\n\nconst spinner = props => (\n  <div className=\"w-100 text-center m-auto\">\n    <i className={classNames(\"sm-spinner fa-2x accent-text fas fa-circle-notch fa-spin\", props.classes)} />\n  </div>\n);\n\nexport default spinner;\n","\nconst JPEGExif = {\n  mapping: {\n    1: { degrees: 0, reflectVertical: false, reflectHorizontal: false },\n    2: { degrees: 0, reflectVertical: false, reflectHorizontal: true },\n    3: { degrees: 180, reflectVertical: false, reflectHorizontal: false },\n    4: { degrees: 0, reflectVertical: true, reflectHorizontal: false },\n    5: { degrees: 270, reflectVertical: false, reflectHorizontal: true },\n    6: { degrees: 90, reflectVertical: false, reflectHorizontal: false },\n    7: { degrees: 90, reflectVertical: false, reflectHorizontal: true },\n    8: { degrees: 270, reflectVertical: false, reflectHorizontal: false },\n  },\n\n  orientation(fileBuffer) {\n    const scanner = new DataView(fileBuffer);\n    let orientation = 1;\n\n    if (scanner.getUint16(0) === 0xFFD8) {\n      let idx = 0;\n      let maxBytes = scanner.byteLength;\n\n      while (idx < maxBytes - 2) {\n        const uint16 = scanner.getUint16(idx);\n        idx += 2;\n\n        switch (uint16) {\n          case 0xFFE1: // Set maxBytes so only exif data is read\n            const exifLength = scanner.getUint16(idx);\n            maxBytes = exifLength - idx;\n            idx += 2;\n            break;\n          case 0x0112: // Read orientation tag\n            orientation = scanner.getUint16(idx + 6, false);\n            maxBytes = 0; // Stop scanning\n            break;\n        }\n      }\n    }\n    return orientation;\n  },\n};\n\nexport default JPEGExif;\n","'use strict';\n\nimport React from 'react';\nimport Spinner from '../utils/spinner';\nimport JPEGExif from '../utils/jpeg-exif';\n\nconst THUMB_MAX_HEIGHT = 64; //px\n\nclass Preview extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      loaded: false,\n      error: false\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n    this.loadPreview();\n  }\n\n  componentWillUnmount() {\n    this._isMounted = false;\n  }\n\n  render() {\n    const divStyle = {\n      width: THUMB_MAX_HEIGHT,\n      height: THUMB_MAX_HEIGHT\n    };\n\n    return (\n      <div\n        aria-label={this.state.error ? 'error' : this.props.file.name}\n        className=\"thumbnail_ file\"\n        role={this.state.error ? 'button' : 'note'}\n        tabIndex=\"0\"\n        onClick={this.state.error ? () => this.props.onErrorIconClick() : null}\n        onKeyPress={this.state.error ? () => this.props.onErrorIconClick() : null}\n      >\n        {this.state.loaded && (\n          <div>\n            {this.state.error\n              ? <div\n                className=\"error\"\n                style={divStyle}\n              >\n                <span className=\"fa-stack\">\n                  <i className=\"far fa-circle fa-stack-2x fa-inverse\" />\n                  <i className=\"fas fa-exclamation fa-stack-1x fa-inverse\" />\n                </span>\n              </div>\n              : <div><canvas height={THUMB_MAX_HEIGHT} ref=\"canvas\" />\n                <p ref=\"file_caption\" className=\"file-caption file-caption-space\">\n                  {this.props.file.name && this.props.file.name}</p>\n              </div>\n            }\n          </div>\n        )}\n\n        {!this.state.loaded && (\n          <div style={divStyle}>\n            <Spinner />\n          </div>\n        )}\n      </div>\n    );\n  }\n\n\n  loadPreview() {\n    var component = this;\n    var file = this.props.file;\n    var reader = new FileReader();\n\n    reader.onload = onReaderLoaded;\n    reader.readAsDataURL(file);\n\n    function onReaderLoaded(event) {\n      if (!component._isMounted)\n        return;\n\n      var image = new Image();\n      image.src = event.target.result;\n\n      image.onload = onImageLoaded;\n      image.onerror = onImageError;\n    }\n\n    function onImageError() {\n      component.props.onImagePreviewError(file);\n      component.setState({\n        loaded: true,\n        error: true\n      });\n    }\n\n    function convertBase64ToArrayBuffer(string) {\n      const binary = window.atob(string.split('base64,')[1]);\n      const length = binary.length;\n      let bytes = new Uint8Array(length);\n\n      for (let i = 0; i < length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n      }\n\n      return bytes.buffer;\n    }\n\n    function onImageLoaded(event) {\n      const buffer = convertBase64ToArrayBuffer(event.target.src);\n      (window.URL || window.webkitURL).revokeObjectURL(this.src);\n\n      if (!component._isMounted)\n        return;\n\n      component.setState({\n        loaded: true\n      });\n\n      const { degrees, reflectVertical, reflectHorizontal } = JPEGExif.mapping[JPEGExif.orientation(buffer)] || JPEGExif.mapping[1],\n        canChangeAspectRatio = degrees == 90 || degrees == 270,\n        canvas = component.refs.canvas;\n\n      let hRatio,\n        vRatio,\n        ratio;\n\n      if (canChangeAspectRatio) {\n        ratio = (this.width > 0) ? (THUMB_MAX_HEIGHT / this.width) : 1;\n        canvas.width = this.height * ratio;\n        canvas.height = this.width * ratio;\n        hRatio = canvas.height / this.width;\n        vRatio = canvas.width / this.height;\n      } else {\n        ratio = (this.height > 0) ? (THUMB_MAX_HEIGHT / this.height) : 1;\n        canvas.width = this.width * ratio;\n        canvas.height = this.height * ratio;\n        hRatio = canvas.height / this.height;\n        vRatio = canvas.width / this.width;\n      }\n\n      ratio = Math.min(hRatio, vRatio);\n      const centerShift_x = (canvas.width - this.width * ratio) / 2,\n        centerShift_y = (canvas.height - this.height * ratio) / 2;\n\n      const ctx = canvas.getContext('2d');\n      ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n      // Fix issue of image caption\n      const caption = component.refs.file_caption\n      caption.style.width = `${canvas.width}px`\n      // Rotate image according to exif orientation\n      ctx.translate(canvas.width / 2, canvas.height / 2);\n      ctx.rotate(degrees * (Math.PI / 180));\n      // Reflect image according to exif mirror\n      if (reflectHorizontal) {\n        ctx.scale(-1, 1);\n      } else if (reflectVertical) {\n        ctx.scale(1, -1);\n      }\n\n      ctx.translate(-canvas.width / 2, -canvas.height / 2);\n\n      ctx.drawImage(\n        this, 0, 0,\n        this.width, this.height,\n        centerShift_x, centerShift_y, this.width * ratio, this.height * ratio\n      );\n    }\n  }\n};\nexport default Preview;\n","import React from 'react';\n\nconst deleteButton = props => (\n  <button\n    aria-label=\"Delete\"\n    className=\"delete p-0 border-0\"\n    onKeyDown={props.handleKeyDown}\n    onClick={props.handleDelete}\n  >\n    <span className=\"fa-stack fa-xs d-flex align-items-center justify-content-center\">\n      <i className=\"fas fa-circle fa-stack-2x\" />\n      <i className=\"fas fa-times fa-stack-1x fa-inverse\" />\n    </span>\n  </button>\n);\n\nexport default deleteButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Preview from './preview';\nimport DeleteButton from '../utils/delete-button';\n\nconst FileThumbnail = props => {\n  return (\n    <div className=\"fadein\">\n      <Preview {...props} />\n      <DeleteButton handleDelete={() => props.onRemoveThumbnail(props.file)} />\n    </div>\n  );\n};\n\nFileThumbnail.propTypes = {\n  file: PropTypes.object.isRequired,\n  onRemoveThumbnail: PropTypes.func,\n  withOrientation: PropTypes.bool,\n};\n\nexport default FileThumbnail;\n","import createReactClass from 'create-react-class';\n'use strict';\n\nimport React    from 'react';\nimport ReactDOM from 'react-dom';\n\nimport genericHelpers from '../../_utils/generic-helpers';\nimport Spinner        from '../utils/spinner';\n\nvar LazyThumbnail = createReactClass({\n  getInitialState() {\n    return {\n       loaded: false\n     };\n  },\n  componentDidMount() {\n    var debouncedOnWindowScroll = genericHelpers.debounce(this.onWindowScroll);\n    $(ReactDOM.findDOMNode(this)).closest('.thumbnails').\n                                  on('scroll', debouncedOnWindowScroll).\n                                  on('resize', debouncedOnWindowScroll);\n\n    this.onWindowScroll();\n  },\n  componentWillUnmount() {\n    $(ReactDOM.findDOMNode(this)).closest('.thumbnails').off('scroll')\n                                               .off('resize');\n  },\n  onWindowScroll() {\n    var threshold = this.props.threshold || 300;\n\n    var bounds    = ReactDOM.findDOMNode(this).getBoundingClientRect();\n    var scrollTop = window.pageYOffset;\n    var top       = bounds.top + scrollTop;\n    var height    = bounds.bottom - bounds.top;\n\n    var visible   = (top === 0 || (top <= (scrollTop + window.innerHeight + threshold)\n                      && (top + height) > (scrollTop - threshold)));\n\n    this.setState({\n      loaded: visible\n    });\n  },\n\n  render() {\n    if (!this.state.loaded) {\n      return (\n        <div className=\"thumbnail_ placeholder\">\n          <Spinner />\n        </div>\n      );\n    }\n\n    return (\n      <this.props.thumbnailType\n        file={this.props.file}\n        position={this.props.position}\n        selected={this.props.selected}\n        withOrientation={this.props.withOrientation}\n        onErrorIconClick={this.props.onErrorIconClick}\n        onImagePreviewError={this.props.onImagePreviewError}\n        onRemoveThumbnail={this.props.onRemoveThumbnail}\n        onSelect={this.props.onSelect}\n        onUnSelect={this.props.onUnSelect}\n        displayCaption={this.props.displayCaption}\n      />\n    );\n  }\n});\n\nexport default LazyThumbnail;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport DeleteButton from '../utils/delete-button';\n\nclass UrlThumbnail extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { dimensions: {} };\n    this.onImgLoad = this.onImgLoad.bind(this);\n  }\n\n  onImgLoad = ({ target: img }) => {\n    this.setState({\n      dimensions: {\n        height: img.offsetHeight,\n        width: img.offsetWidth,\n      },\n    });\n  }\n  handleSelect = () => {\n    if (this.props.onSelect && this.props.file.viable) {\n      this.props.onSelect(this.props.file);\n    }\n  }\n\n  handleUnSelect = () => {\n    if (this.props.onUnSelect && this.props.file.viable) {\n      this.props.onUnSelect(this.props.file);\n    }\n  }\n\n  render() {\n    const url = ['thumb', 'thumb_url', 'url'].reduce(\n      (memo, key) => memo || this.props.file[key],\n      null\n    );\n    const imageCaption = this.props.file.filename ? this.props.file.filename : this.props.file.title;\n    const { width, height } = this.state.dimensions;\n\n    const actionButton = () => {\n      if (this.props.onRemoveThumbnail)\n        return (\n          <DeleteButton\n            handleDelete={() => this.props.onRemoveThumbnail(this.props.file)}\n          />\n        );\n\n      if (this.props.selected)\n        return (\n          <span className=\"fa-stack fa-xs\" onClick={this.handleUnSelect}>\n            <i className=\"fas fa-square fa-stack-2x\" />\n            <i className=\"fas fa-check fa-stack-1x fa-inverse\" />\n          </span>\n        );\n    };\n    return (\n        <div\n          className={classNames(\n            'image-container',\n            { selected: this.props.selected },\n            { fadein: this.props.onRemoveThumbnail }\n          )}>\n          <button\n            aria-label={this.props.file.title}\n            aria-checked={this.props.selected}\n            className={classNames('thumbnail_ url')}\n            role={this.props.onRemoveThumbnail ? 'note' : 'checkbox'}\n            style={{\n              backgroundImage: !this.props.withOrientation && `url(${url})`,\n            }}\n            onClick={this.props.selected ? this.handleUnSelect : this.handleSelect}>\n            {this.props.withOrientation && (\n              <img src={url} onLoad={this.onImgLoad} alt={imageCaption} />\n            )}\n          </button>\n          { this.props.displayCaption && <p style={{ width: width }} className=\"file-caption\">\n              {imageCaption}\n            </p> }\n          {actionButton()}\n        </div>\n    );\n  }\n}\n\nUrlThumbnail.propTypes = {\n  file: PropTypes.object.isRequired,\n  onRemoveThumbnail: PropTypes.func,\n  onSelect: PropTypes.func,\n  onUnSelect: PropTypes.func,\n  selected: PropTypes.bool,\n  withOrientation: PropTypes.bool,\n  displayCaption: PropTypes.bool\n};\n\nexport default UrlThumbnail;\n","'use strict';\n\nimport React from 'react';\nimport PropTypes  from 'prop-types';\n\nconst albumCoverThumbnail = props => (\n  <button\n    className=\"thumbnail_ album-cover\"\n    onClick={() => props.onSelect(props.file.album)}\n    style={{backgroundImage: `url('${props.file.album.cover}')`}}\n    aria-label={props.file.album.title}\n  >\n    <div className=\"caption text-truncate\">\n      {props.file.album.title}\n    </div>\n  </button>\n);\n\nalbumCoverThumbnail.propTypes = {\n  file: PropTypes.object.isRequired,\n  onSelect: PropTypes.func.isRequired\n};\n\nexport default albumCoverThumbnail;\n","'use strict';\n\n// Import Libraries\nimport React from 'react';\n// Import JS Modules\nimport classNames          from 'classnames';\n\nimport FileThumbnail       from './file-thumbnail';\nimport LazyThumbnail       from './lazy-thumbnail';\nimport UrlThumbnail        from './url-thumbnail';\nimport AlbumCoverThumbnail from './album-cover-thumbnail';\n\nconst Thumbnails = props => {\n  const files = props.files || [];\n\n  return (\n    <div className={classNames('thumbnails', props.classes)}>\n      {files.map(renderFile, this)}\n    </div>\n  );\n\n\n  function renderFile(file, i) {\n    let thumbnailType;\n\n    switch (file.source) {\n      case 'url':\n        thumbnailType = UrlThumbnail;\n        break;\n      case 'album':\n        thumbnailType = AlbumCoverThumbnail;\n        break;\n      case 'footer':\n      default:\n        thumbnailType = FileThumbnail;\n        break;\n    }\n\n    return (\n      <LazyThumbnail\n        file={file}\n        key={'' + i + (file.name || file.url)}\n        selected={props.isSelected ? props.isSelected(file) : false}\n        thumbnailType={thumbnailType}\n        withOrientation={props.withOrientation}\n        onImagePreviewError={props.onImagePreviewError}\n        onErrorIconClick={props.onErrorIconClick}\n        onRemoveThumbnail={props.onRemoveThumbnail}\n        onSelect={props.handleSelect}\n        onUnSelect={props.handleUnSelect}\n        displayCaption={props.displayCaption}\n      />\n    );\n  }\n};\n\nexport default Thumbnails;\n","import React from 'react';\nimport Store from '../../_utils/tools/store';\nimport showLoginOverlay from '../utils/show-login-overlay';\n\nconst loginSection = () => {\n  const handleLogin = () => {\n    window.showLeaveOverlay = false;\n    showLoginOverlay();\n }\n\n  return (\n    <div className=\"text-center\">\n      <i className=\"far fa-images large\" />\n      <h3 className=\"service-title font-weight-bold\">My {Store.name} Photos</h3>\n      <small className=\"d-block\">Please log in to My {Store.name} Photos account</small>\n      <button\n        aria-label=\"Log in\"\n        className=\"btn btn-primary login font-weight-bold\"\n        onClick={handleLogin}\n      >Log in\n      </button>\n      <small className=\"d-block more-space mb-2\">If you do not have an account, please&nbsp;\n        <a\n          aria-label=\"Sign up\"\n          className=\"sign-up\"\n          href={window.urls.newAccount}\n          role=\"link\"\n          tabIndex=\"0\"\n          title=\"Link to Create Account\"\n        >\n          Sign Up.\n        </a>\n      </small>\n    </div>\n  );\n}\n\nexport default loginSection;\n","'use strict';\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes  from 'prop-types';\n\nconst photoStorageMessage = props => {\n\n  const message = 'Photo accounts are not designed or intended to be used as permanent Photo storage. Please be advised that if your account is inactive for more than 1 year, uploaded photos will be deleted.';\n\n  return (\n    <div className={classNames('custom-alert', props.variant, props.isOpen ? 'd-block alert alert-warning' : 'd-none')}>\n      <button\n        type=\"button\"\n        className=\"close\"\n        aria-label=\"Close\"\n        onClick={props.onClose}\n      >\n        <i className=\"fas fa-times\" />\n      </button>\n      <p className=\"title d-block d-md-none\">Photo Storage Policy</p>\n      <p className=\"content m-lg-0\">\n        <span className=\"store-name\">{props.storeName}&nbsp;</span>\n        {message}\n      </p>\n    </div>\n  );\n}\nphotoStorageMessage.propTypes = {\n  isOpen: PropTypes.bool,\n  onClose: PropTypes.func,\n  storeName: PropTypes.string,\n  variant: PropTypes.string,\n};\n\nexport default photoStorageMessage;\n","'use strict';\n\nimport React      from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames from 'classnames';\n\nimport LoginSection        from './login-section';\nimport PhotoStorageMessage from './photo-storage-message';\n\nconst notLoggedIn = props => (\n  <div className=\"h-100\">\n    <LoginSection />\n    <div className={classNames({'modal-overlay': props.showAlert})}>\n      <PhotoStorageMessage\n        isOpen={props.showAlert}\n        onClose={props.handleCloseAlert}\n        storeName={props.storeName + '.com'}\n      />\n      <div className={classNames('psp-trigger justify-content-center d-md-none', props.showAlert ? 'd-none' : 'd-flex')}>\n        <p>Read&nbsp;\n          <a\n            aria-label={`Read ${props.storeName} Photo Storage Policy`}\n            className=\"sign-up\"\n            href=\"#\"\n            role=\"link\"\n            onClick={(e) => props.toggleShowAlert(e)}\n          >\n            {`${props.storeName} Photo Storage Policy`}\n          </a>\n        </p>\n      </div>\n    </div>\n  </div>\n);\n\nnotLoggedIn.propTypes = {\n  showAlert: PropTypes.bool.isRequired,\n  handleCloseAlert: PropTypes.func,\n  storeName: PropTypes.string,\n  toggleShowAlert: PropTypes.func,\n};\n\nexport default notLoggedIn;\n","import React      from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames from 'classnames';\n\nconst SelectAllSection = props => (\n  <div className=\"select-all\">\n    <h3>{props.title}</h3>\n    <button\n      aria-label={props.label}\n      aria-checked={props.selectedAll}\n      className={classNames('btn btn-link', {selected: props.selectedAll})}\n      disabled={!props.enabled}\n      role=\"checkbox\"\n      onClick={props.selectedAll ? props.selectNone : props.selectAll}\n    >\n      Select all&nbsp;\n      <i className={classNames('checkbox', props.selectedAll ? 'fas fa-check-square' : 'far fa-square')} />\n    </button>\n  </div>\n);\n\nSelectAllSection.propTypes = {\n  enabled: PropTypes.bool,\n  label: PropTypes.string,\n  selectAll: PropTypes.func.isRequired,\n  selectedAll: PropTypes.bool.isRequired,\n  selectNone: PropTypes.func.isRequired,\n  title: PropTypes.string,\n};\n\nexport default SelectAllSection;\n","import React from 'react';\nimport classNames from 'classnames';\n\nconst moreButton = props => (\n  <div className=\"mx-auto more-button-container\">\n    <button\n      className={classNames('btn btn-outline-dark rounded my-2')}\n      id={props.id}\n      onClick={props.onMoreButtonClick}\n    >\n      Load More\n    </button>\n  </div>\n);\n\nexport default moreButton;\n","import React from \"react\";\nimport PropTypes from 'prop-types';\n\nimport MoreButton from '../utils/more-button';\nimport Spinner from '../../_utils/spinner';\nimport UrlThumbnail from '../thumbnails/url-thumbnail';\n\nconst streamPhotos = props => {\n  if (!props.photos.length) {\n    return <Spinner />;\n  }\n\n  return (\n    <div id=\"streamDiv\" style={{ height: props.height, overflow: 'auto' }}>\n      <div className=\"scroll-box\">\n        {\n          props.photos.map((photo, i) => (\n            <UrlThumbnail\n              file={photo}\n              selected={props.isSelected(photo)}\n              key={`stream-${photo.id}-${i}`}\n              onSelect={props.onSelect}\n              onUnSelect={props.onUnSelect}\n              withOrientation\n            />\n          ))\n        }\n        {\n          !!props.hasMoreButton &&\n          <MoreButton\n            id=\"load-more-stream\"\n            onMoreButtonClick={props.onMoreButtonClick}\n          />\n        }\n      </div>\n    </div>\n  );\n};\n\nstreamPhotos.propTypes = {\n  hasMoreButton: PropTypes.bool,\n  height: PropTypes.number.isRequired,\n  isSelected: PropTypes.func.isRequired,\n  onSelect: PropTypes.func.isRequired,\n  onUnSelect: PropTypes.func.isRequired,\n  photos: PropTypes.array.isRequired,\n  total: PropTypes.number.isRequired,\n};\n\nexport default streamPhotos;\n","import React from 'react';\n\nconst MyAlbumsAndTimelines = props => (\n  <div className=\"thumbnails covers d-flex flex-nowrap justify-content-center\">\n    <button\n      className=\"thumbnail_ album-cover\"\n      style={{ backgroundImage: `url(${props.myAlbumsCover})` }}\n      aria-label=\"My Albums\"\n      onClick={props.onMyAlbumsClick}\n    >\n      <div className=\"caption text-truncate\">My Albums</div>\n    </button>\n    <button\n      className=\"thumbnail_ album-cover\"\n      style={{ backgroundImage: `url(${props.timelinesCover})` }}\n      aria-label=\"Timelines\"\n      onClick={props.onTimelinesClick}\n    >\n      <div className=\"caption text-truncate\">Timelines</div>\n    </button>\n  </div>\n);\n\nexport default MyAlbumsAndTimelines;\n","import React      from 'react';\n\nconst noPhotosMessage = () => (\n  <div className=\"no-albums\">You have no albums</div>\n);\n\nexport default noPhotosMessage;","import createReactClass from 'create-react-class';\n'use strict';\n\n// Import Libraries\nimport React from 'react';\nimport classNames from 'classnames';\n\n// Import JS Modules\nimport albums from './albums';\nimport Store from '../../_utils/tools/store';\nimport {\n  builderDispatch,\n  WebUI\n} from '../../_utils/ui';\nimport Spinner from '../../_utils/spinner';\nimport {\n  pluralizer,\n  localDateFormat\n} from '../utils/utils';\n\nimport UrlBuilder from '../../_utils/url-building';\n// Import JSX Modules\nimport ServiceHeader from './service-header';\nimport FileSelectorMixin from '../loader-mixins/file-selector-mixin';\nimport UrlLoaderUploadMixin from '../loader-mixins/url-loader-upload-mixin';\nimport FileClearingMixin from '../loader-mixins/file-clearing-mixin';\nimport Thumbnails from '../thumbnails/thumbnails';\nimport UrlThumbnail from '../thumbnails/url-thumbnail';\nimport NotLoggedIn from './not-logged-in';\nimport SelectAllSection from './select-all-section';\nimport StreamPhotos from './stream-photos';\nimport MyAlbumsAndTimelines from './my-albums-and-timelines';\nimport NoPhotosMessage from './no-photos-messgae';\nimport MoreButton from '../utils/more-button';\nimport PhotoStorageMessage from './photo-storage-message';\nimport sendToGoogleAnalytics from \"../../_prism-builder/desktop/slot-tools/send-to-google-analytics\";\n\nconst DEFAULT_COVER_HEIGHT = 136;\nconst DEFAULT_SELECT_ALL_HEIGHT = 33;\n\nconst MyPhotosImport = createReactClass({\n  mixins: [UrlLoaderUploadMixin, FileSelectorMixin, FileClearingMixin],\n\n  displayName: 'My Photos Import',\n\n  getInitialState() {\n    const { App } = window;\n\n    return {\n      selectedAlbum: null,\n      view: 'stream', //stream, timelines, allAlbums, albumContent\n      total: null,\n      stream: [],\n      streamPage: 1,\n      timelines: [],\n      timelinesPage: 1,\n      loggedIn: App && App.order.logged_in(),\n      showAlert: true\n    };\n  },\n\n  componentDidMount() {\n    this.files = (this.files || []);\n    this.streamPerPage = this.props.isMobile ? 15 : 16;\n    this.timelinesPerPage = this.props.isMobile ? 15 : 32;\n\n    this.builderDispatchToken = builderDispatch.register(payload => {\n      if (payload.type === WebUI.LOGIN) {\n        this.setState({\n          loggedIn: true\n        }, () => {\n          this.loadAlbums();\n          this.fetchData('stream', this.state.streamPage, this.streamPerPage);\n          this.fetchData('timelines', this.state.timelinesPage, this.timelinesPerPage);\n        });\n      }\n    });\n\n    this.albumsContents = {};\n\n    if (this.state.loggedIn) {\n      this.loadAlbums();\n      this.fetchData('stream', this.state.streamPage, this.streamPerPage);\n      this.fetchData('timelines', this.state.timelinesPage, this.timelinesPerPage);\n    }\n  },\n\n  componentWillUnmount() {\n    builderDispatch.unregister(this.builderDispatchToken);\n  },\n\n  render() {\n    const $body = (() => {\n      if (this.state.loggedIn) {\n        if (this.state.view == 'stream') {\n          return this.renderStream();\n        }\n\n        if (this.state.view == 'timelines') {\n          return this.renderTimelines();\n        }\n\n        if (this.state.selectedAlbum && this.state.view == 'albumContent') {\n          return this.renderAlbumContent();\n        }\n\n        if (this.state.view == 'allAlbums') {\n          return this.renderAlbumList();\n        }\n      }\n\n      return (\n        <NotLoggedIn\n          storeName={Store.name}\n          showAlert={this.state.showAlert}\n          handleCloseAlert={this.handleCloseAlert}\n          toggleShowAlert={this.handleToggleShowAlert}\n        />\n      );\n    })();\n    return (\n      <div\n        id={'image-loader-service-' + this.props.service}\n        style={{ height: this.props.height }}\n        className={classNames('image-loader-service',\n          this.props.service,\n          this.state.loggedIn ? this.state.view : 'guest',\n          { 'd-none': !this.props.isActive })}>\n        {$body}\n      </div>\n    );\n  },\n\n  renderStream() {\n    const { total, stream } = this.state,\n      coversHeight = $('.stream-body > .covers').outerHeight() || DEFAULT_COVER_HEIGHT,\n      selectAllHeight = $('.stream-body > .select-all').outerHeight() || DEFAULT_SELECT_ALL_HEIGHT,\n      componentHeight = (this.props.height - coversHeight - selectAllHeight);\n\n    if (!this.state.streamLoaded) {\n      return <Spinner className=\"h-100\" />;\n    }\n\n    if (stream.length === 0) {\n      return <NoPhotosMessage />;\n    }\n\n    return (\n      <div className=\"stream-body\">\n        <MyAlbumsAndTimelines\n          myAlbumsCover={this.getCover(\"stream\")}\n          timelinesCover={this.getCover(\"timelines\")}\n          onMyAlbumsClick={() => this.handleChangeView(\"allAlbums\")}\n          onTimelinesClick={() => this.handleChangeView(\"timelines\")}\n        />\n        <SelectAllSection\n          enabled\n          label=\"Select all photos\"\n          title=\"All Photos\"\n          selectedAll={this.handleAllSelected(stream)}\n          selectAll={() => this.handleSelectAll(stream)}\n          selectNone={() => this.handleSelectNone(stream)}\n        />\n        <StreamPhotos\n          hasMoreButton={total > stream.length}\n          height={componentHeight}\n          isSelected={this.isSelected}\n          photos={stream}\n          total={total || 0}\n          onMoreButtonClick={() => this.handleLoadMoreButtonClick('stream')}\n          onSelect={this.handleSelect}\n          onUnSelect={this.handleUnSelect}\n        />\n        {\n          !!window.document.referrer &&\n          <PhotoStorageMessage\n            isOpen={this.state.showAlert}\n            storeName={Store.name + '.com'}\n            variant=\"all-photos-alert\"\n            onClose={this.handleCloseAlert}\n          />\n        }\n      </div>\n    );\n  },\n\n  renderAlbumList() {\n    if (!this.state.albumsLoaded) return <Spinner className=\"h-100\" />;\n\n    const thumbnails = albums.data.map(album => {\n      return {\n        source: 'album',\n        album: album\n      };\n    }).sort((a, b) => b.album.id - a.album.id);\n\n    return (\n      <div key=\"albums-list\" className=\"albums-list-body\">\n        <ServiceHeader\n          title=\"My Albums\"\n          onBackClick={() => this.handleChangeView(\"stream\", false)}\n        />\n        {\n          thumbnails.length ?\n            <Thumbnails\n              files={thumbnails}\n              isSelected={this.isSelected}\n              itemIdentifier=\"name\"\n              handleSelect={this.handleAlbumSelected}\n              displayCaption={true}\n              withOrientation\n            />\n            :\n            <NoPhotosMessage />\n        }\n      </div>\n    );\n  },\n\n  renderAlbumContent() {\n    const { selectedAlbum } = this.state;\n    const albumContent = this.albumsContents[selectedAlbum.id];\n\n    if (!albumContent) {\n      return (\n        <div\n          className=\"album-content-body h-100\"\n          key=\"albumContent\"\n        >\n          <ServiceHeader\n            title={selectedAlbum.title}\n            onBackClick={() => this.handleChangeView(\"allAlbums\")}\n          />\n          <Spinner className=\"h-100\" />\n        </div>\n      );\n    }\n\n    if (albumContent.photos.length) {\n      return (\n        <div key=\"albumContent\" className=\"album-content-body\" >\n          <ServiceHeader\n            title={selectedAlbum.title}\n            onBackClick={() => this.handleChangeView(\"allAlbums\")}\n          />\n          {this.state.selectedAlbum &&\n            <SelectAllSection\n              enabled\n              label=\"Select all photos\"\n              title={pluralizer(albumContent.photos.length, 'photo')}\n              selectedAll={this.handleAllSelected(albumContent.photos)}\n              selectAll={() => this.handleSelectAll(albumContent.photos)}\n              selectNone={() => this.handleSelectNone(albumContent.photos)}\n            />\n          }\n\n          <Thumbnails\n            files={albumContent.photos}\n            isSelected={this.isSelected}\n            itemIdentifier=\"url\"\n            handleSelect={this.handleSelect}\n            handleUnSelect={this.handleUnSelect}\n            withOrientation\n          />\n        </div>\n      );\n    }\n  },\n\n  renderTimelines() {\n    const { timelines, total } = this.state;\n\n    const timelinesByDate = timelines.reduce((memo, photo) => {\n      const photoDateTaken = localDateFormat(photo.date_taken);\n      memo[photoDateTaken] = memo[photoDateTaken] || [];\n      memo[photoDateTaken].push(photo);\n      return memo;\n    }, {});\n\n    return (\n      <div className=\"timelines-body\">\n        <ServiceHeader\n          title=\"Timelines\"\n          onBackClick={() => this.handleChangeView(\"stream\", false)}\n        />\n        <div id=\"timelinesDiv\"\n          style={{\n            height: this.props.height,\n            overflow: \"auto\"\n          }}\n        >\n          <div className=\"scroll-box\">\n            {\n              Object.keys(timelinesByDate).map((date, i) => (\n                <div key={`timelines-${i}`} className=\"timeline w-100\">\n                  <SelectAllSection\n                    enabled\n                    key={date}\n                    label={`${date} Select all photos`}\n                    title={date}\n                    selectedAll={this.handleAllSelected(timelinesByDate[date])}\n                    selectAll={() => this.handleSelectAll(timelinesByDate[date])}\n                    selectNone={() => this.handleSelectNone(timelinesByDate[date])}\n                  />\n                  <div className='thumbnails'>\n                    {\n                      timelinesByDate[date].map(photo => (\n                        <UrlThumbnail\n                          file={photo}\n                          key={`stream-${photo.id}`}\n                          selected={this.isSelected(photo)}\n                          onSelect={this.handleSelect}\n                          onUnSelect={this.handleUnSelect}\n                          withOrientation\n                        />\n                      ))\n                    }\n                  </div>\n                </div>\n              ))\n            }\n            {\n              total > timelines.length &&\n              <MoreButton\n                id=\"load-more-timelines\"\n                onMoreButtonClick={() => this.handleLoadMoreButtonClick('timelines')}\n              />\n            }\n          </div>\n        </div>\n      </div>\n    );\n  },\n\n  loadAlbums() {\n    if (this.state.loggedIn) {\n      albums.load(() => {\n        this.setState({\n          albumsLoaded: true\n        });\n      });\n    }\n  },\n\n  getDestUrl(dest, page, perPage) {\n    const params = {\n      page,\n      per_page: perPage,\n      timelines: dest === 'timelines' ? true : undefined\n    };\n\n    return '/account/my-photos/stream.json?' + UrlBuilder.buildURLQuery(params);\n  },\n\n  fetchData(dest, page, perPage) {\n    fetch(this.getDestUrl(dest, page, perPage), {\n      credentials: 'same-origin'\n    })\n      .then(response => response.json())\n      .then(data => {\n        data.photos.forEach(photo => {\n          photo.source = 'url'\n        });\n\n        const destPage = `${dest}Page`;\n\n        this.setState({\n          [dest]: this.state[dest].concat(data.photos),\n          [destPage]: ++this.state[destPage],\n          total: data.total,\n          [dest + 'Loaded']: true\n        }, () => this.scrollIntoView(dest));\n      })\n      .catch(error => {\n        console.error('Error:', error);\n        this.setState({ [dest + 'Loaded']: true })\n      });\n  },\n\n  handleChangeView(view, hideMenu = true) {\n    this.props.onHideMenu(hideMenu);\n    this.setState({ view: view, selectedAlbum: null });\n  },\n\n  getCover(view) {\n    if (this.state[view].length) {\n      return this.state[view][0].url;\n    }\n  },\n\n  handleSelect(photo) {\n    if (this.files.some(file => file.id === photo.id)) {\n      // this photo is already selected\n      return;\n    }\n\n    this.files.push({ ...photo }); // photo object is cloned so modificatons made to it don't persist\n\n    this.props.onFilesSelected();\n  },\n\n  handleUnSelect(photo) {\n    this.files = this.files.filter(f => f.id !== photo.id);\n    this.props.onFilesSelected();\n  },\n\n  handleSelectAll(photos) {\n    const existingFileIds = this.files.reduce((acc, file) => {\n      acc[file.id] = true;\n      return acc;\n    }, {});\n\n    const photosToAdd = photos.filter((p) => p.viable && !existingFileIds[p.id]).map((p) => ({ ...p })); // photo object is cloned so modificatons made to it don't persist\n    this.files = this.files.concat(photosToAdd);\n\n    this.props.onFilesSelected();\n  },\n\n  handleSelectNone(photos) {\n    this.files = this.files.filter(f => !photos.find(p => f.id === p.id));\n\n    this.props.onFilesSelected();\n  },\n\n  isSelected(photo) {\n    const ids = this.files.map(file => file.id);\n    return ids.includes(photo.id);\n  },\n\n  triggerFeatureTracking() {\n    sendToGoogleAnalytics('my-photos','import')\n  },\n\n  handleAllSelected(photos) {\n    if (!photos.length) return false;\n\n    this.triggerFeatureTracking()\n\n    const fileIds = this.files.reduce((memo, f) => {\n      memo[f.id] = true;\n      return memo;\n    }, {});\n\n    return photos.every(p => fileIds[p.id]);\n  },\n\n  handleViewAllAlbums(e) {\n    e.preventDefault();\n\n    this.setState({\n      selectedAlbum: null\n    });\n\n    if (typeof this.props.onHideMenu === 'function') {\n      this.props.onHideMenu();\n    }\n\n    if (typeof this.props.toggleAlbumSelected === 'function') {\n      this.props.toggleAlbumSelected();\n    }\n  },\n\n  handleAlbumSelected(album) {\n    this.setState({\n      selectedAlbum: album,\n      view: 'albumContent'\n    });\n\n    if (typeof this.props.onHideMenu === 'function') {\n      this.props.onHideMenu(true);\n    }\n\n    if (typeof this.props.toggleAlbumSelected == 'function') {\n      this.props.toggleAlbumSelected();\n    }\n\n    if (this.albumsContents[album.id]) {\n      return;\n    }\n\n    const that = this;\n\n    fetch(album.link, {\n      credentials: 'same-origin'\n    }).\n      then(response => response.json()).\n      then(data => onAlbumLoaded(data));\n\n    function onAlbumLoaded(data) {\n      data.photos.forEach(photo => {\n        photo.source = 'url';\n      });\n\n      if (that.albumsContents[album.id]) {\n        that.albumsContents[album.id].photos = that.albumsContents[album.id].photos.concat(data.photos);\n      } else {\n        that.albumsContents[album.id] = data;\n      }\n\n      that.forceUpdate();\n    }\n  },\n\n  handleToggleShowAlert(e) {\n    e.preventDefault();\n    const prevShowAlertState = this.state.showAlert;\n    this.setState({ showAlert: !prevShowAlertState });\n  },\n\n  handleCloseAlert() {\n    this.setState({ showAlert: false });\n  },\n\n  _clear() {\n    this.setState({\n      selectedAlbum: null,\n      view: 'stream'\n    });\n  },\n\n  handleLoadMoreButtonClick(source) {\n    $(`#${source}Div .image-container`).addClass('seen');\n    this.fetchData(source, this.state[`${source}Page`], this[`${source}PerPage`]);\n  },\n\n  scrollIntoView(source) {\n    const element = $(`#${source}Div .image-container:not(.seen)`)[0];\n    element && element.scrollIntoView({ behavior: \"smooth\", block: \"start\", inline: \"end\" });\n  },\n});\n\nexport default MyPhotosImport;\n","var BeethovenFrieze = (function(root_url) {\n  var generateServiceUrl, sendMessage, image_selected_callbacks, on_complete_callbacks, services, tray_image_removed_callbacks, on_album_entry_callbacks;\n\n  services = {\n    dropbox: 'dropbox',\n    facebook: 'facebook',\n    flickr: 'flickr',\n    instagram: 'instagram',\n    picasa: 'picasa',\n    skydrive: 'skydrive'\n  };\n\n  image_selected_callbacks = [];\n\n  on_complete_callbacks = [];\n\n  tray_image_removed_callbacks = [];\n\n  on_album_entry_callbacks = [];\n\n  (function() {\n    var MessageHandler, messageHandlers, messageReceived, onCompleteMessage, onImageSelectedMessage, onTrayImageRemoved, onAlbumEntry;\n    MessageHandler = (function() {\n      function MessageHandler(prefix, onRecieved) {\n        this.prefix = prefix;\n        this.onRecieved = onRecieved;\n      }\n\n      MessageHandler.prototype.is = function(message) {\n        return message.match(this.prefix);\n      };\n\n      MessageHandler.prototype.strip = function(message) {\n        return message.replace(this.prefix, '');\n      };\n\n      MessageHandler.prototype.handle = function(message) {\n        if (typeof message === 'string' && this.is(message)) {\n          return this.onRecieved(this.strip(message));\n        }\n      };\n\n      return MessageHandler;\n    })();\n    onImageSelectedMessage = function(data) {\n      var i, image_selected_callback, len;\n      data = (function() {\n        try {\n          return JSON.parse(data);\n        } catch (error) {\n          return {\n            url: data\n          };\n        }\n      })();\n      for (i = 0, len = image_selected_callbacks.length; i < len; i++) {\n        image_selected_callback = image_selected_callbacks[i];\n        image_selected_callback({ url: data.url, thumb: data.thumb, filename: data.displayName, originalKey: data.originalKey, foreignUserId: data.id });\n      }\n      return void 0;\n    };\n    onCompleteMessage = function() {\n      var i, len, on_complete_callback;\n      for (i = 0, len = on_complete_callbacks.length; i < len; i++) {\n        on_complete_callback = on_complete_callbacks[i];\n        on_complete_callback();\n      }\n      return void 0;\n    };\n\n    onTrayImageRemoved = function(data) {\n      data = (function() {\n        try {\n          return JSON.parse(data);\n        } catch (error) {\n          return {\n            url: data\n          };\n        }\n      })();\n      var i, len, tray_image_removed_callback;\n      for (i = 0, len = tray_image_removed_callbacks.length; i < len; i++) {\n        tray_image_removed_callback = tray_image_removed_callbacks[i];\n        tray_image_removed_callback(data);\n      }\n      return void 0;\n    };\n\n    onAlbumEntry = function(data) {\n      data = (function() {\n        try {\n          return data;\n        } catch (error) {\n          return {\n            url: data\n          };\n        }\n      })();\n      var i, len, on_album_entry_callback;\n      for (i = 0, len = on_album_entry_callbacks.length; i < len; i++) {\n        on_album_entry_callback = on_album_entry_callbacks[i];\n        on_album_entry_callback(data);\n      }\n      return void 0;\n    };\n\n    messageHandlers = [new MessageHandler(/^image_selected:/, onImageSelectedMessage), new MessageHandler(/^complete$/, onCompleteMessage), new MessageHandler(/^tray_image_removed:/, onTrayImageRemoved), new MessageHandler(/^on_album_entry:/, onAlbumEntry)];\n    messageReceived = function(e) {\n      var i, len, messageHandler;\n      if (e.origin === root_url) {\n        for (i = 0, len = messageHandlers.length; i < len; i++) {\n          messageHandler = messageHandlers[i];\n          messageHandler.handle(e.data);\n        }\n      }\n      return void 0;\n    };\n    return window.addEventListener(\"message\", messageReceived, false);\n  })();\n\n  generateServiceUrl = function(service, params, single_image_select) {\n    var generateUrl, url;\n    if (single_image_select == null) {\n      single_image_select = true;\n    }\n    if (!services[service]) {\n      return;\n    }\n    generateUrl = function(url, params) {\n      var param, value;\n      if (params == null) {\n        params = {};\n      }\n      return (url + \"?\") + ((function() {\n        var results;\n        results = [];\n        for (param in params) {\n          value = params[param];\n          if (value) {\n            results.push(param + \"=\" + (param === 'callback' ? value : encodeURIComponent(value)));\n          }\n        }\n        return results;\n      })()).join('&');\n    };\n    params.service = service;\n    params.source_url = window.location.href.replace(/#.*$/, '');\n    params.single_image_select = single_image_select;\n    params.live_update = true;\n    return url = generateUrl(root_url + \"/login\", params);\n  };\n\n  sendMessage = function(iFrame, message) {\n    iFrame.contentWindow.postMessage(message, iFrame.src);\n  };\n\n  return {\n    services: services,\n    generateServiceUrl: generateServiceUrl,\n    sendMessage: sendMessage,\n    onImageSelected: function(callback) {\n      return image_selected_callbacks.push(callback);\n    },\n    onComplete: function(callback) {\n      return on_complete_callbacks.push(callback);\n    },\n    onTrayImageRemoved: function(callback) {\n      return tray_image_removed_callbacks.push(callback);\n    },\n    onAlbumEntry: function(callback) {\n      return on_album_entry_callbacks.push(callback);\n    }\n  };\n\n}).call(this, window.cloudloader_url);\n\n// 'http://192.168.148.4:3000'\n// 'http://localhost:3000'\n// 'https://cloudloader-wm.livelink.io'\n\n// module.exports = BeethovenFrieze;\nexport default BeethovenFrieze;\n","/* eslint-disable jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '../_utils/select-wrapper';\nimport { builderDispatch, WebUI } from '../_utils/ui';\nimport LoaderAdditionalOptions from './additional-options';\nimport { DefaultsEvents } from '../_prints-builder/common/events/event-declarations';\n\nclass PrintSizeSelector extends React.Component {\n  constructor(props, context) {\n    super(props, context);\n\n    this.state = {\n      selectedSize: undefined,\n    };\n  }\n\n  componentDidMount() {\n    this.builderDispatchToken = builderDispatch.register(payload => {\n      switch (payload.type) {\n        case WebUI.UPLOAD_ABORTED:\n          this.setState({ selectedSize: undefined });\n          break;\n      }\n    });\n  }\n\n  componentWillUnmount() {\n    builderDispatch.unregister(this.builderDispatchToken);\n  }\n\n  get sizes() {\n    const { additionalOptions } = this.context;\n\n    return additionalOptions[LoaderAdditionalOptions.PRINT_SIZES] || [];\n  }\n\n  get hasNoSizes() {\n    return this.sizes.length === 0;\n  }\n\n  selectedPrintSizeKey() {\n    return (this.sizes.find(size => size.selected) || {}).key;\n  }\n\n  printSizeChanged = sizeKey => {\n    this.setState({\n      selectedSize: sizeKey,\n    });\n\n    builderDispatch.dispatch({\n      type: DefaultsEvents.CHANGE_SIZE,\n      sizeKey,\n    });\n  };\n\n  render() {\n    if (this.hasNoSizes) {\n      return null;\n    }\n\n    const { selectedSize } = this.state;\n    const sizeOptions = this.sizes.map(size => {\n      return {\n        value: size.key,\n        label: size.title,\n      };\n    });\n\n    return (\n      <div className=\"default-print-size col form-group my-2 d-flex align-items-center justify-content-center\">\n        <label\n          htmlFor=\"print-size-select\"\n          className=\"col-3 col-sm-2 col-md-4 col-lg-5 col-xl-3 col-form-label text-center px-0\">\n          Print Size:\n        </label>\n        <Select\n          className=\"col-3 col-sm-2 col-md-3 col-lg-5 col-xl-3 text-center badge-pill\"\n          id=\"print-size-select\"\n          label=\"Print Size\"\n          name=\"default-print-size\"\n          options={sizeOptions}\n          value={selectedSize || this.selectedPrintSizeKey()}\n          onChange={this.printSizeChanged}\n        />\n      </div>\n    );\n  }\n}\n\nPrintSizeSelector.contextTypes = {\n  additionalOptions: PropTypes.object,\n};\n\nexport default PrintSizeSelector;\n","import createReactClass from 'create-react-class';\n'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Store from '../_utils/tools/store';\nimport FileSelectorMixin from './loader-mixins/file-selector-mixin';\nimport UrlLoaderUploadMixin from './loader-mixins/url-loader-upload-mixin';\nimport FileClearingMixin from './loader-mixins/file-clearing-mixin';\nimport BeethovenFrieze from 'libs/beethoven-frieze';\nimport PrintSizeSelector from './print-size-selector';\nimport LoaderAdditionalOptions from './additional-options';\nimport { builderDispatch, WebUI } from \"../_utils/ui\";\nimport ServiceHeader from './album-import/service-header';\n\nconst themeName = (() => {\n  if (!Store.isWalmart()) {\n    return Store.name.toLowerCase();\n  }\n})();\n\nconst CloudImport = createReactClass({\n  mixins: [UrlLoaderUploadMixin, FileSelectorMixin, FileClearingMixin],\n  displayName: 'Cloud import',\n\n  getInitialState() {\n    return {\n      albumName: null\n    };\n  },\n\n  componentDidMount() {\n    this.dispatchToken = builderDispatch.register(payload => {\n      switch (payload.type) {\n        case (WebUI.UPLOAD_PHOTO_REMOVED_FROM_TRAY):\n          this.handlePhotoRemoved(payload.key, payload.service);\n          break;\n        case (WebUI.UPLOAD_ALL_PHOTOS_REMOVED_FROM_TRAY):\n          this.handleAllPhotosRemoved();\n          break;\n      }\n    });\n  },\n\n  UNSAFE_componentWillMount() {\n    this.getIframeUrl();\n    BeethovenFrieze.onImageSelected(({ url, thumb, filename, originalKey, foreignUserId = null, }) => {\n      if (this.props.isActive) {\n        if (url === decodeURI(url)) {\n          url = encodeURI(url);\n        }\n        originalKey = String(originalKey || url);\n\n        this.files = (this.files || []);\n\n        // avoid duplicates\n        if (this.files.some(file => file.originalKey === originalKey)) {\n          return;\n        }\n\n        this.files.push({\n          url: url,\n          thumb: thumb,\n          filename: filename,\n          source: 'url',\n          originalKey: originalKey,\n          foreignUserId: foreignUserId,\n        });\n      }\n    });\n\n    BeethovenFrieze.onComplete(() => {\n      if (this.props.isActive) {\n        this.props.onFilesSelected();\n      }\n    });\n\n    BeethovenFrieze.onTrayImageRemoved((data) => {\n      const dataKey = String(data.url || data);\n      if (this.props.isActive) {\n        this.files = (this.files || []);\n        this.files = this.files.filter(file => file.originalKey !== dataKey);\n        this.props.onFilesSelected();\n      }\n    });\n\n    BeethovenFrieze.onAlbumEntry((data) => {\n      if (this.props.isActive && data !== 'root') {\n        this.setState({\n          albumName: data\n        });\n        this.props.onHideMenu(true);\n      }\n\n      if (this.props.isActive && data === 'root') {\n        this.handleShowAlbums('root');\n      }\n    })\n  },\n\n  render() {\n    let iframeUrl = this.iframeUrl ? this.iframeUrl : 'about:blank';\n\n    if (!this.iframeUrl && (this.shown_already || this.props.isActive)) {\n      iframeUrl = BeethovenFrieze.generateServiceUrl(this.props.service, { theme: themeName }, false);\n      this.shown_already = true;\n    }\n\n    return (\n      <div>\n        {this.props.isActive && this.state.albumName &&\n          <ServiceHeader\n            title={this.state.albumName}\n            onBackClick={() => { this.handleShowAlbums('handle_back') }}\n          />\n        }\n        <div id={`image-loader-service-${this.props.service}`}\n          className={classNames(\"image-loader-service\", \"cloud\", { \"cloud-album\": this.state.albumName }, { \"d-none\": !this.props.isActive }, this.props.service, { \"has-additional-options\": this.context.additionalOptions[LoaderAdditionalOptions.PRINT_SIZES] })}\n          style={{ height: this.props.height }}>\n          <div className=\"iframe-container\">\n            <iframe\n              aria-label={`${this.props.title} service frame`}\n              className=\"image-loader-iframe\"\n              frameBorder=\"0\"\n              id={`image-loader-iframe-${this.props.service}`}\n              ref={ref => this.iFrame = ref}\n              src={iframeUrl}\n              title={`${this.props.title} service frame`}\n            />\n          </div>\n        </div>\n      </div>\n    );\n  },\n\n  handlePhotoRemoved(key, service) {\n    if (service === this.props.service) {\n      const message = `tray_image_removed:${key}`;\n      BeethovenFrieze.sendMessage(this.iFrame, message);\n    }\n  },\n\n  handleAllPhotosRemoved() {\n    (this.files || []).forEach(file => this.handlePhotoRemoved(file.originalKey || file.url));\n  },\n\n  handleShowAlbums(actionName) {\n    if (this.props.isActive) {\n      this.props.onHideMenu(false);\n      this.setState({\n        albumName: null\n      });\n      const message = `on_album_entry:` + actionName;\n      BeethovenFrieze.sendMessage(this.iFrame, message);\n    }\n  },\n\n  getIframeUrl() {\n    const source = window.urls || {};\n    const list = source.cloudServices || {};\n\n    this.iframeUrl = list[this.props.service];\n  }\n});\n\nCloudImport.contextTypes = {\n  additionalOptions: PropTypes.object\n};\n\nexport default CloudImport;\n","// https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob\n// polyfill\n// canvas.toDataURL may not work in iOS: http://stackoverflow.com/questions/26152652/ios-html5-canvas-todataurl\nif (!HTMLCanvasElement.prototype.toBlob) {\n  Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\n    value(callback, type, quality) {\n      const binStr = atob(this.toDataURL(type, quality).split(',')[1]);\n      const len = binStr.length;\n      const arr = new Uint8Array(len);\n      if (binStr.length === 0) {\n        throw 'Unable to generate Data URL';\n      }\n\n      if (binStr.length === 0) {\n        throw 'Unable to generate Data URL';\n      }\n\n      if (binStr.length === 0) {\n        throw 'Unable to generate Data URL';\n      }\n\n      for (let i = 0; i < len; i++) {\n        arr[i] = binStr.charCodeAt(i);\n      }\n\n      callback(new Blob([arr], { type: type || 'image/png' }));\n    },\n  });\n}\n\nconst ORIENTATION = {\n  LANDSCAPE: 1,\n  PORTRAIT: 2,\n};\n\nconst calculateOrientation = function (image) {\n  return image.width >= image.height ? ORIENTATION.LANDSCAPE : ORIENTATION.PORTRAIT;\n};\n\n// from https://gist.github.com/mfyz/10198229#file-resize_preview-html-L100\nexport const localFileResize = function (file, size, callback) {\n  const reader = new FileReader();\n\n  reader.onload = onReaderLoaded;\n  reader.readAsDataURL(file);\n\n  function onReaderLoaded() {\n    const image = new Image();\n    image.onload = onImageLoaded;\n    image.src = this.result;\n  }\n\n  function onImageLoaded() {\n    const orientation = calculateOrientation(this);\n\n    // shrink longest edge to size\n    if (orientation === ORIENTATION.PORTRAIT && this.height > size) {\n      this.width *= size / this.height;\n      this.height = size;\n    }\n\n    if (orientation === ORIENTATION.LANDSCAPE && this.width > size) {\n      this.height *= size / this.width;\n      this.width = size;\n    }\n\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d');\n\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    canvas.width = this.width;\n    canvas.height = this.height;\n    ctx.drawImage(this, 0, 0, this.width, this.height);\n    try {\n      canvas.toBlob(callback, 'image/jpeg');\n    } catch (error) {\n      console.warn(error); // Optional\n      return callback(file);\n    }\n  }\n};\n\n// Disable client side file resize for touch screen devices until further notice\nexport const ABLE_TO_RESIZE = false; // screenAndStyle.isTouch();\n","import React from 'react';\nimport uniqueId from 'lodash.uniqueid';\n\nclass UploadButton extends React.Component {\n  // Don't set this in the render\n  id = `file-upload-${uniqueId()}`;\n\n  handleKeyDown = event => {\n    if (event.keyCode === 13) event.target.click();\n  };\n\n  render() {\n    return (\n      <label\n        aria-label={this.props.ariaLabel}\n        className='btn upload-button btn-primary btn-lg font-weight-bold'\n        tabIndex='0'\n        htmlFor={this.id}\n        role='button'\n        onKeyDown={this.handleKeyDown}\n      >\n        {this.props.label}\n\n        <input\n          id={this.id}\n          type='file'\n          className='d-none'\n          multiple\n          accept={this.props.fileValidator.acceptFileTypeString}\n          onChange={this.props.onChange}\n        />\n      </label>\n    );\n  }\n};\n\nexport default UploadButton;\n","import React from 'react';\n\nconst uploadTargetRadioButton = (props) => (\n  <input\n    id={props.value}\n    className=\"form-check-input mr-2\"\n    type=\"radio\"\n    name=\"source\"\n    value={props.value}\n    checked={props.albumOption === props.value}\n    onChange={props.handleChange}\n  />\n );\n\nexport default uploadTargetRadioButton;\n","const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport function defaultNewAlbumTitle() {\n  const now = new Date();\n\n  return `Uploaded on ${monthNames[now.getMonth()]} ${now.getDate()}, ${now.getFullYear()}`;\n}\n","import React       from 'react';\nimport classNames  from 'classnames';\nimport albums      from './album-import/albums';\nimport Select      from '../_utils/select-wrapper';\nimport UploadTargetRadioButton from './utils/upload-target-radio-button';\nimport { defaultNewAlbumTitle } from './default-new-album-title';\n\nclass AlbumSelector extends React.Component{\n  constructor() {\n    super();\n    this.handleAlbumOptionChange        = this.handleAlbumOptionChange.bind(this);\n    this.handleNewAlbumOptionFocus      = this.handleNewAlbumOptionFocus.bind(this);\n    this.handleAlbumExistingOptionFocus = this.handleAlbumExistingOptionFocus.bind(this);\n    this.handleSaveToAnExistingAlbum    = this.handleSaveToAnExistingAlbum.bind(this);\n    this.handleSaveToANewAlbum          = this.handleSaveToANewAlbum.bind(this);\n\n    this.state = {\n      loaded: false,\n      albumOption: 'new'\n    };\n  }\n  UNSAFE_componentWillMount() {\n    albums.load(() => {\n      this.setState({\n        loaded: true\n      });\n    });\n  }\n  componentDidMount() {\n    if (!this.props.targetAlbum) {\n      this.props.onAlbumSelected({\n        title: defaultNewAlbumTitle()\n      });\n    }\n  }\n  render() {\n    const albumList = albums.data.map(album => {\n      return {\n        value: album.id,\n        label: album.title\n      };\n    });\n\n    let heading = 'Create new album';\n    if (albumList.length) {\n      heading += ' or add to existing album';\n    }\n    const newAlbumTitle = defaultNewAlbumTitle();\n\n    return (\n      <fieldset aria-labelledby='album-select-header' className=\"album-selector\">\n        <p id=\"album-select-header\">{ heading }</p>\n          <div className=\"form-row form-group\">\n            <div className=\"col-5\">\n              <div className=\"form-check text-left\">\n                <UploadTargetRadioButton value=\"new\"\n                                         albumOption={this.state.albumOption}\n                                         handleChange={this.handleAlbumOptionChange} />\n                <label className=\"form-check-label\" htmlFor=\"new\">\n                  New album:\n                </label>\n              </div>\n            </div>\n            <div className=\"col-7\">\n              <input ref=\"new-album-name\"\n                     className=\"form-control form-control-lg\"\n                     type=\"text\"\n                     placeholder={ newAlbumTitle }\n                     defaultValue={ newAlbumTitle }\n                     onChange={ this.handleSaveToANewAlbum }\n                     onFocus= { this.handleNewAlbumOptionFocus } />\n            </div>\n          </div>\n          <div className={ classNames('form-row form-group', { 'd-none': albumList.length == 0 }) }>\n            <div className=\"col-5\">\n              <div className=\"form-check text-left\">\n                <UploadTargetRadioButton value=\"existing\"\n                                         albumOption={this.state.albumOption}\n                                         handleChange={this.handleAlbumOptionChange} />\n                <label htmlFor=\"existing\" className=\"form-check-label\">\n                  Existing album:\n                </label>\n              </div>\n            </div>\n            <div className=\"col-7\">\n              <Select name=\"albums\"\n                      value={this.props.targetAlbum && this.props.targetAlbum.id || albumList[0] && albumList[0].value}\n                      options={albumList}\n                      onFocus={this.handleAlbumExistingOptionFocus}\n                      onChange={this.handleSaveToAnExistingAlbum} />\n            </div>\n          </div>\n      </fieldset>\n    );\n  }\n  handleNewAlbumOptionFocus() {\n    this.setState({\n      albumOption: 'new'\n    });\n  }\n  handleAlbumExistingOptionFocus() {\n    this.setState({\n      albumOption: 'existing'\n    });\n  }\n  handleAlbumOptionChange(e) {\n    const value = e.target.value;\n\n    this.setState({\n      albumOption: value\n    });\n\n    if (value == 'existing' && !this.props.targetAlbum.id && albums.data[0]) {\n      this.handleSaveToAnExistingAlbum(albums.data[0].id)\n    }\n    if (value == 'new' && !this.props.targetAlbum.title) {\n      this.handleSaveToANewAlbum()\n    }\n  }\n  handleSaveToANewAlbum() {\n    this.props.onAlbumSelected({\n      title: this.refs['new-album-name'].value\n    });\n  }\n  handleSaveToAnExistingAlbum(albumId) {\n    if (albumId) {\n      this.props.onAlbumSelected({\n        id: albumId\n      });\n    }\n  }\n}\n\nexport default AlbumSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst CustomText = ({ textKey, className }) => {\n  const text = (window.customText || {})[textKey];\n\n  if (!text) {\n    return null;\n  }\n\n  return <p className={className} dangerouslySetInnerHTML={{ __html: text }} />;\n};\n\nCustomText.propTypes = {\n  textKey: PropTypes.string.isRequired,\n  className: PropTypes.string,\n};\n\nCustomText.defaultProps = {\n  className: null,\n};\n\nexport default CustomText;\n","import createReactClass from 'create-react-class';\n('use strict');\n\n// Import Libraries\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\n// Import JS Modules\nimport {\n  ABLE_TO_RESIZE,\n  localFileResize,\n} from './loader-mixins/local-file-resize';\nimport GenericPaginatedUploadMixin from './loader-mixins/generic-paginated-upload-mixin';\nimport UploadAnalytics from './upload-analytics';\nimport { builderDispatch, WebUI } from '../_utils/ui';\nimport DPI from './utils/dpi';\nimport FileClearingMixin from './loader-mixins/file-clearing-mixin';\nimport FileSelectorMixin from './loader-mixins/file-selector-mixin';\nimport PrintSizeSelector from './print-size-selector';\nimport UploadButton from './utils/upload-button';\nimport AlbumSelector from './album-selector';\nimport CustomText from './custom-text';\nimport ImageUploadFileValidator from '../_utils/image-upload-file-validator';\nimport AnalyticsHandler from '../_libs/analytics/checkout-google-analytics';\nimport sendToGoogleAnalytics from '../_prism-builder/desktop/slot-tools/send-to-google-analytics';\nimport LoaderAdditionalOptions from './additional-options';\n\nconst LocalFileImportNative = createReactClass({\n  mixins: [GenericPaginatedUploadMixin, FileSelectorMixin, FileClearingMixin],\n  displayName: 'Local file import native',\n\n[LoaderAdditionalOptions.CLOSE_ON_FILE_SELECTION]: true,\n\n  getInitialState() {\n    const { App } = window;\n    this.files = this.files || [];\n\n    return {\n      loggedIn: App && App.order.logged_in(),\n    };\n  },\n  componentDidMount() {\n    this.builderDispatchToken = builderDispatch.register(payload => {\n      if (payload.type === WebUI.LOGIN) {\n        this.setState({\n          loggedIn: true,\n        });\n      }\n    });\n    const component = ReactDOM.findDOMNode(this);\n    component.addEventListener('dragover', this.handleDragOver, false);\n    component.addEventListener('dragenter', this.handleDragEnter, false);\n    component.addEventListener('dragleave', this.handleDragLeave, false);\n    component.addEventListener('drop', this.handleDrop, false);\n  },\n  componentWillUnmount() {\n    const component = ReactDOM.findDOMNode(this);\n    component.removeEventListener('dragover', this.handleDragOver, false);\n    component.removeEventListener('dragenter', this.handleDragEnter, false);\n    component.removeEventListener('dragleave', this.handleDragLeave, false);\n    component.removeEventListener('drop', this.handleDrop, false);\n  },\n  sendAnalytics(eventCategory) {\n    const eventLabel = UploadAnalytics.eventTypes(\n      this.files.map(f => f.uploadAnalytics)\n    );\n\n    const payload = {\n      type: WebUI.Analytics.SEND,\n      eventCategory: eventCategory,\n      eventAction: 'device',\n      eventLabel: eventLabel,\n      eventValue: this.files.length,\n    };\n\n    AnalyticsHandler.handleAnalyticsEvent(payload);\n  },\n\n  render() {\n    return (\n      <div\n        id={'image-loader-service-' + this.props.service}\n        style={{ height: this.props.height }}\n        className={classNames(\n          'text-center image-loader-service',\n          this.props.service,\n          { 'd-none': !this.props.isActive }\n        )}\n        tabIndex=\"0\">\n        <div className=\"d-flex d-md-none h-100 flex-column justify-content-center\">\n          <i className=\"d-none d-lg-block large fas fa-laptop\" />\n          <i className=\"mx-auto d-lg-none large fas fa-mobile-alt\" />\n          <h3 className=\"title service-title font-weight-bold\">My Phone</h3>\n          <small>Upload photos from your phone.</small>\n          <div className=\"mobile-file-upload-btn\">\n            <UploadButton\n              label=\"Upload\"\n              ariaLabel=\"Upload\"\n              onChange={this.handleFileInputChange}\n              fileValidator={this.props.fileValidator}\n            />\n          </div>\n          <CustomText\n            textKey=\"imageLoaderLocalFileImportBannerHtml\"\n            className=\"local-file-import-banner local-file-import-banner-mweb d-none\"\n          />\n        </div>\n        <div id=\"fileList\" />\n        <div\n          id=\"dropArea\"\n          className=\"d-none d-md-flex h-100 flex-column justify-content-center align-items-center\">\n          <div className=\"album-selector-box d-none\">\n            <div className=\"image-loader-form-elements\">\n              {!!this.state.loggedIn && (\n                <AlbumSelector\n                  targetAlbum={this.props.targetAlbum}\n                  onAlbumSelected={this.handleTargetAlbumSelected}\n                />\n              )}\n              <PrintSizeSelector />\n            </div>\n          </div>\n          <div className=\"device\">\n            <i className=\"large fas fa-cloud-upload-alt\" />\n            <h3 className=\"title font-weight-bold\">Drag &amp; Drop Here</h3>\n            <small className=\"d-block\">*Upload only jpeg or jpg.</small>\n            <UploadButton\n              label=\"Upload Photos\"\n              ariaLabel=\"Upload\"\n              onChange={this.handleFileInputChange}\n              fileValidator={this.props.fileValidator}\n            />\n          </div>\n\n          <CustomText\n            textKey=\"imageLoaderLocalFileImportBannerHtml\"\n            className=\"local-file-import-banner local-file-import-banner-rweb d-none\"\n          />\n        </div>\n      </div>\n    );\n  },\n\n  handleTargetAlbumSelected(album) {\n    if (this.props.onTargetAlbumSelected)\n      this.props.onTargetAlbumSelected(album);\n  },\n\n  draggable() {\n    return (\n      'draggable' in document.createElement('span') && !this.props.isMobile\n    );\n  },\n\n  handleDragOver(e) {\n    e.stopPropagation();\n    e.preventDefault();\n  },\n\n  dragCounter: 0,\n  handleDragEnter(e) {\n    e.preventDefault();\n\n    if (this.dragCounter++ === 0) $('#dropArea').addClass('dragover');\n  },\n\n  handleDragLeave(e) {\n    if (--this.dragCounter === 0) $('#dropArea').removeClass('dragover');\n  },\n\n  handleDrop(e) {\n    e.preventDefault();\n\n    this.dragCounter = 0;\n    $('#dropArea').removeClass('dragover');\n\n    const files = Array.prototype.slice.apply(e.dataTransfer.files);\n    this.addFiles(files);\n\n    return false;\n  },\n\n  triggerFeatureTracking() {\n    sendToGoogleAnalytics('local-import', '');\n  },\n\n\n  handleFileInputChange(e) {\n    this.triggerFeatureTracking();\n    const $fileInput = e.target;\n    const files = Array.from($fileInput.files);\n\n    if (!files.length) return;\n\n    this.addFiles(files);\n    $fileInput.value = '';\n  },\n\n  addFiles(files) {\n    const filteredFiles = files.filter(\n      this.props.fileValidator.isAcceptedFileType\n    );\n\n    if (!!filteredFiles.length) {\n      this.files = this.files.concat(filteredFiles);\n      this.props.onFilesSelected();\n    }\n  },\n\n  _buildFormData(formData, file) {\n    var deferred = $.Deferred();\n\n    formData.append('name', file.name);\n    if (ABLE_TO_RESIZE) {\n      localFileResize(\n        file,\n        this.props.optimiseUploadFiles ? DPI.DPI_300 : DPI.DPI_HIGH,\n        appendFile\n      );\n    } else {\n      appendFile(file);\n    }\n\n    return deferred.promise();\n\n    function appendFile(file) {\n      formData.append('file', file);\n      deferred.resolve(formData);\n    }\n  },\n});\n\nLocalFileImportNative.defaultProps = {\n  fileValidator: new ImageUploadFileValidator(),\n};\n\nexport default LocalFileImportNative;\n","/*!\n * Pusher JavaScript Library v8.3.0\n * https://pusher.com/\n *\n * Copyright 2020, Pusher\n * Released under the MIT licence.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n    // TODO(dchest): methods to encode chunk-by-chunk.\n    function Coder(_paddingCharacter) {\n        if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n        this._paddingCharacter = _paddingCharacter;\n    }\n    Coder.prototype.encodedLength = function (length) {\n        if (!this._paddingCharacter) {\n            return (length * 8 + 5) / 6 | 0;\n        }\n        return (length + 2) / 3 * 4 | 0;\n    };\n    Coder.prototype.encode = function (data) {\n        var out = \"\";\n        var i = 0;\n        for (; i < data.length - 2; i += 3) {\n            var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n            out += this._encodeByte((c >>> 3 * 6) & 63);\n            out += this._encodeByte((c >>> 2 * 6) & 63);\n            out += this._encodeByte((c >>> 1 * 6) & 63);\n            out += this._encodeByte((c >>> 0 * 6) & 63);\n        }\n        var left = data.length - i;\n        if (left > 0) {\n            var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n            out += this._encodeByte((c >>> 3 * 6) & 63);\n            out += this._encodeByte((c >>> 2 * 6) & 63);\n            if (left === 2) {\n                out += this._encodeByte((c >>> 1 * 6) & 63);\n            }\n            else {\n                out += this._paddingCharacter || \"\";\n            }\n            out += this._paddingCharacter || \"\";\n        }\n        return out;\n    };\n    Coder.prototype.maxDecodedLength = function (length) {\n        if (!this._paddingCharacter) {\n            return (length * 6 + 7) / 8 | 0;\n        }\n        return length / 4 * 3 | 0;\n    };\n    Coder.prototype.decodedLength = function (s) {\n        return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n    };\n    Coder.prototype.decode = function (s) {\n        if (s.length === 0) {\n            return new Uint8Array(0);\n        }\n        var paddingLength = this._getPaddingLength(s);\n        var length = s.length - paddingLength;\n        var out = new Uint8Array(this.maxDecodedLength(length));\n        var op = 0;\n        var i = 0;\n        var haveBad = 0;\n        var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n        for (; i < length - 4; i += 4) {\n            v0 = this._decodeChar(s.charCodeAt(i + 0));\n            v1 = this._decodeChar(s.charCodeAt(i + 1));\n            v2 = this._decodeChar(s.charCodeAt(i + 2));\n            v3 = this._decodeChar(s.charCodeAt(i + 3));\n            out[op++] = (v0 << 2) | (v1 >>> 4);\n            out[op++] = (v1 << 4) | (v2 >>> 2);\n            out[op++] = (v2 << 6) | v3;\n            haveBad |= v0 & INVALID_BYTE;\n            haveBad |= v1 & INVALID_BYTE;\n            haveBad |= v2 & INVALID_BYTE;\n            haveBad |= v3 & INVALID_BYTE;\n        }\n        if (i < length - 1) {\n            v0 = this._decodeChar(s.charCodeAt(i));\n            v1 = this._decodeChar(s.charCodeAt(i + 1));\n            out[op++] = (v0 << 2) | (v1 >>> 4);\n            haveBad |= v0 & INVALID_BYTE;\n            haveBad |= v1 & INVALID_BYTE;\n        }\n        if (i < length - 2) {\n            v2 = this._decodeChar(s.charCodeAt(i + 2));\n            out[op++] = (v1 << 4) | (v2 >>> 2);\n            haveBad |= v2 & INVALID_BYTE;\n        }\n        if (i < length - 3) {\n            v3 = this._decodeChar(s.charCodeAt(i + 3));\n            out[op++] = (v2 << 6) | v3;\n            haveBad |= v3 & INVALID_BYTE;\n        }\n        if (haveBad !== 0) {\n            throw new Error(\"Base64Coder: incorrect characters for decoding\");\n        }\n        return out;\n    };\n    // Standard encoding have the following encoded/decoded ranges,\n    // which we need to convert between.\n    //\n    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  +   /\n    // Index:   0 - 25                    26 - 51              52 - 61   62  63\n    // ASCII:  65 - 90                    97 - 122             48 - 57   43  47\n    //\n    // Encode 6 bits in b into a new character.\n    Coder.prototype._encodeByte = function (b) {\n        // Encoding uses constant time operations as follows:\n        //\n        // 1. Define comparison of A with B using (A - B) >>> 8:\n        //          if A > B, then result is positive integer\n        //          if A <= B, then result is 0\n        //\n        // 2. Define selection of C or 0 using bitwise AND: X & C:\n        //          if X == 0, then result is 0\n        //          if X != 0, then result is C\n        //\n        // 3. Start with the smallest comparison (b >= 0), which is always\n        //    true, so set the result to the starting ASCII value (65).\n        //\n        // 4. Continue comparing b to higher ASCII values, and selecting\n        //    zero if comparison isn't true, otherwise selecting a value\n        //    to add to result, which:\n        //\n        //          a) undoes the previous addition\n        //          b) provides new value to add\n        //\n        var result = b;\n        // b >= 0\n        result += 65;\n        // b > 25\n        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n        // b > 51\n        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n        // b > 61\n        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n        // b > 62\n        result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n        return String.fromCharCode(result);\n    };\n    // Decode a character code into a byte.\n    // Must return 256 if character is out of alphabet range.\n    Coder.prototype._decodeChar = function (c) {\n        // Decoding works similar to encoding: using the same comparison\n        // function, but now it works on ranges: result is always incremented\n        // by value, but this value becomes zero if the range is not\n        // satisfied.\n        //\n        // Decoding starts with invalid value, 256, which is then\n        // subtracted when the range is satisfied. If none of the ranges\n        // apply, the function returns 256, which is then checked by\n        // the caller to throw error.\n        var result = INVALID_BYTE; // start with invalid character\n        // c == 43 (c > 42 and c < 44)\n        result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n        // c == 47 (c > 46 and c < 48)\n        result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n        // c > 47 and c < 58\n        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n        // c > 64 and c < 91\n        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n        // c > 96 and c < 123\n        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n        return result;\n    };\n    Coder.prototype._getPaddingLength = function (s) {\n        var paddingLength = 0;\n        if (this._paddingCharacter) {\n            for (var i = s.length - 1; i >= 0; i--) {\n                if (s[i] !== this._paddingCharacter) {\n                    break;\n                }\n                paddingLength++;\n            }\n            if (s.length < 4 || paddingLength > 2) {\n                throw new Error(\"Base64Coder: incorrect padding\");\n            }\n        }\n        return paddingLength;\n    };\n    return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n    return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n    return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n    __extends(URLSafeCoder, _super);\n    function URLSafeCoder() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    // URL-safe encoding have the following encoded/decoded ranges:\n    //\n    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  -   _\n    // Index:   0 - 25                    26 - 51              52 - 61   62  63\n    // ASCII:  65 - 90                    97 - 122             48 - 57   45  95\n    //\n    URLSafeCoder.prototype._encodeByte = function (b) {\n        var result = b;\n        // b >= 0\n        result += 65;\n        // b > 25\n        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n        // b > 51\n        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n        // b > 61\n        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n        // b > 62\n        result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n        return String.fromCharCode(result);\n    };\n    URLSafeCoder.prototype._decodeChar = function (c) {\n        var result = INVALID_BYTE;\n        // c == 45 (c > 44 and c < 46)\n        result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n        // c == 95 (c > 94 and c < 96)\n        result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n        // c > 47 and c < 58\n        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n        // c > 64 and c < 91\n        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n        // c > 96 and c < 123\n        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n        return result;\n    };\n    return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n    return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n    return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n    return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n    return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n    return stdCoder.decodedLength(s);\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = \"utf8: invalid string\";\nvar INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n    // Calculate result length and allocate output array.\n    // encodedLength() also validates string and throws errors,\n    // so we don't need repeat validation here.\n    var arr = new Uint8Array(encodedLength(s));\n    var pos = 0;\n    for (var i = 0; i < s.length; i++) {\n        var c = s.charCodeAt(i);\n        if (c < 0x80) {\n            arr[pos++] = c;\n        }\n        else if (c < 0x800) {\n            arr[pos++] = 0xc0 | c >> 6;\n            arr[pos++] = 0x80 | c & 0x3f;\n        }\n        else if (c < 0xd800) {\n            arr[pos++] = 0xe0 | c >> 12;\n            arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n            arr[pos++] = 0x80 | c & 0x3f;\n        }\n        else {\n            i++; // get one more character\n            c = (c & 0x3ff) << 10;\n            c |= s.charCodeAt(i) & 0x3ff;\n            c += 0x10000;\n            arr[pos++] = 0xf0 | c >> 18;\n            arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n            arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n            arr[pos++] = 0x80 | c & 0x3f;\n        }\n    }\n    return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n    var result = 0;\n    for (var i = 0; i < s.length; i++) {\n        var c = s.charCodeAt(i);\n        if (c < 0x80) {\n            result += 1;\n        }\n        else if (c < 0x800) {\n            result += 2;\n        }\n        else if (c < 0xd800) {\n            result += 3;\n        }\n        else if (c <= 0xdfff) {\n            if (i >= s.length - 1) {\n                throw new Error(INVALID_UTF16);\n            }\n            i++; // \"eat\" next character\n            result += 4;\n        }\n        else {\n            throw new Error(INVALID_UTF16);\n        }\n    }\n    return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n    var chars = [];\n    for (var i = 0; i < arr.length; i++) {\n        var b = arr[i];\n        if (b & 0x80) {\n            var min = void 0;\n            if (b < 0xe0) {\n                // Need 1 more byte.\n                if (i >= arr.length) {\n                    throw new Error(INVALID_UTF8);\n                }\n                var n1 = arr[++i];\n                if ((n1 & 0xc0) !== 0x80) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b = (b & 0x1f) << 6 | (n1 & 0x3f);\n                min = 0x80;\n            }\n            else if (b < 0xf0) {\n                // Need 2 more bytes.\n                if (i >= arr.length - 1) {\n                    throw new Error(INVALID_UTF8);\n                }\n                var n1 = arr[++i];\n                var n2 = arr[++i];\n                if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n                min = 0x800;\n            }\n            else if (b < 0xf8) {\n                // Need 3 more bytes.\n                if (i >= arr.length - 2) {\n                    throw new Error(INVALID_UTF8);\n                }\n                var n1 = arr[++i];\n                var n2 = arr[++i];\n                var n3 = arr[++i];\n                if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n                min = 0x10000;\n            }\n            else {\n                throw new Error(INVALID_UTF8);\n            }\n            if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n                throw new Error(INVALID_UTF8);\n            }\n            if (b >= 0x10000) {\n                // Surrogate pair.\n                if (b > 0x10ffff) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b -= 0x10000;\n                chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n                b = 0xdc00 | (b & 0x3ff);\n            }\n        }\n        chars.push(String.fromCharCode(b));\n    }\n    return chars.join(\"\");\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// required so we don't have to do require('pusher').default etc.\nmodule.exports = __webpack_require__(3).default;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts\nclass ScriptReceiverFactory {\n    constructor(prefix, name) {\n        this.lastId = 0;\n        this.prefix = prefix;\n        this.name = name;\n    }\n    create(callback) {\n        this.lastId++;\n        var number = this.lastId;\n        var id = this.prefix + number;\n        var name = this.name + '[' + number + ']';\n        var called = false;\n        var callbackWrapper = function () {\n            if (!called) {\n                callback.apply(null, arguments);\n                called = true;\n            }\n        };\n        this[number] = callbackWrapper;\n        return { number: number, id: id, name: name, callback: callbackWrapper };\n    }\n    remove(receiver) {\n        delete this[receiver.number];\n    }\n}\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n    VERSION: \"8.3.0\",\n    PROTOCOL: 7,\n    wsPort: 80,\n    wssPort: 443,\n    wsPath: '',\n    httpHost: 'sockjs.pusher.com',\n    httpPort: 80,\n    httpsPort: 443,\n    httpPath: '/pusher',\n    stats_host: 'stats.pusher.com',\n    authEndpoint: '/pusher/auth',\n    authTransport: 'ajax',\n    activityTimeout: 120000,\n    pongTimeout: 30000,\n    unavailableTimeout: 10000,\n    userAuthentication: {\n        endpoint: '/pusher/user-auth',\n        transport: 'ajax'\n    },\n    channelAuthorization: {\n        endpoint: '/pusher/auth',\n        transport: 'ajax'\n    },\n    cdn_http: \"http://js.pusher.com\",\n    cdn_https: \"https://js.pusher.com\",\n    dependency_suffix: \"\"\n};\n/* harmony default export */ var defaults = (Defaults);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts\n\n\nclass dependency_loader_DependencyLoader {\n    constructor(options) {\n        this.options = options;\n        this.receivers = options.receivers || ScriptReceivers;\n        this.loading = {};\n    }\n    load(name, options, callback) {\n        var self = this;\n        if (self.loading[name] && self.loading[name].length > 0) {\n            self.loading[name].push(callback);\n        }\n        else {\n            self.loading[name] = [callback];\n            var request = runtime.createScriptRequest(self.getPath(name, options));\n            var receiver = self.receivers.create(function (error) {\n                self.receivers.remove(receiver);\n                if (self.loading[name]) {\n                    var callbacks = self.loading[name];\n                    delete self.loading[name];\n                    var successCallback = function (wasSuccessful) {\n                        if (!wasSuccessful) {\n                            request.cleanup();\n                        }\n                    };\n                    for (var i = 0; i < callbacks.length; i++) {\n                        callbacks[i](error, successCallback);\n                    }\n                }\n            });\n            request.send(receiver);\n        }\n    }\n    getRoot(options) {\n        var cdn;\n        var protocol = runtime.getDocument().location.protocol;\n        if ((options && options.useTLS) || protocol === 'https:') {\n            cdn = this.options.cdn_https;\n        }\n        else {\n            cdn = this.options.cdn_http;\n        }\n        return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n    }\n    getPath(name, options) {\n        return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts\n\n\n\nvar DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');\nvar Dependencies = new dependency_loader_DependencyLoader({\n    cdn_http: defaults.cdn_http,\n    cdn_https: defaults.cdn_https,\n    version: defaults.VERSION,\n    suffix: defaults.dependency_suffix,\n    receivers: DependenciesReceivers\n});\n\n// CONCATENATED MODULE: ./src/core/utils/url_store.ts\nconst urlStore = {\n    baseUrl: 'https://pusher.com',\n    urls: {\n        authenticationEndpoint: {\n            path: '/docs/channels/server_api/authenticating_users'\n        },\n        authorizationEndpoint: {\n            path: '/docs/channels/server_api/authorizing-users/'\n        },\n        javascriptQuickStart: {\n            path: '/docs/javascript_quick_start'\n        },\n        triggeringClientEvents: {\n            path: '/docs/client_api_guide/client_events#trigger-events'\n        },\n        encryptedChannelSupport: {\n            fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'\n        }\n    }\n};\nconst buildLogSuffix = function (key) {\n    const urlPrefix = 'See:';\n    const urlObj = urlStore.urls[key];\n    if (!urlObj)\n        return '';\n    let url;\n    if (urlObj.fullUrl) {\n        url = urlObj.fullUrl;\n    }\n    else if (urlObj.path) {\n        url = urlStore.baseUrl + urlObj.path;\n    }\n    if (!url)\n        return '';\n    return `${urlPrefix} ${url}`;\n};\n/* harmony default export */ var url_store = ({ buildLogSuffix });\n\n// CONCATENATED MODULE: ./src/core/auth/options.ts\nvar AuthRequestType;\n(function (AuthRequestType) {\n    AuthRequestType[\"UserAuthentication\"] = \"user-authentication\";\n    AuthRequestType[\"ChannelAuthorization\"] = \"channel-authorization\";\n})(AuthRequestType || (AuthRequestType = {}));\n\n// CONCATENATED MODULE: ./src/core/errors.ts\nclass BadEventName extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass BadChannelName extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass RequestTimedOut extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass TransportPriorityTooLow extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass TransportClosed extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass UnsupportedFeature extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass UnsupportedTransport extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass UnsupportedStrategy extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass HTTPAuthError extends Error {\n    constructor(status, msg) {\n        super(msg);\n        this.status = status;\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nconst ajax = function (context, query, authOptions, authRequestType, callback) {\n    const xhr = runtime.createXHR();\n    xhr.open('POST', authOptions.endpoint, true);\n    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    for (var headerName in authOptions.headers) {\n        xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n    }\n    if (authOptions.headersProvider != null) {\n        let dynamicHeaders = authOptions.headersProvider();\n        for (var headerName in dynamicHeaders) {\n            xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n        }\n    }\n    xhr.onreadystatechange = function () {\n        if (xhr.readyState === 4) {\n            if (xhr.status === 200) {\n                let data;\n                let parsed = false;\n                try {\n                    data = JSON.parse(xhr.responseText);\n                    parsed = true;\n                }\n                catch (e) {\n                    callback(new HTTPAuthError(200, `JSON returned from ${authRequestType.toString()} endpoint was invalid, yet status code was 200. Data was: ${xhr.responseText}`), null);\n                }\n                if (parsed) {\n                    callback(null, data);\n                }\n            }\n            else {\n                let suffix = '';\n                switch (authRequestType) {\n                    case AuthRequestType.UserAuthentication:\n                        suffix = url_store.buildLogSuffix('authenticationEndpoint');\n                        break;\n                    case AuthRequestType.ChannelAuthorization:\n                        suffix = `Clients must be authorized to join private or presence channels. ${url_store.buildLogSuffix('authorizationEndpoint')}`;\n                        break;\n                }\n                callback(new HTTPAuthError(xhr.status, `Unable to retrieve auth string from ${authRequestType.toString()} endpoint - ` +\n                    `received status: ${xhr.status} from ${authOptions.endpoint}. ${suffix}`), null);\n            }\n        }\n    };\n    xhr.send(query);\n    return xhr;\n};\n/* harmony default export */ var xhr_auth = (ajax);\n\n// CONCATENATED MODULE: ./src/core/base64.ts\nfunction encode(s) {\n    return btoa(utob(s));\n}\nvar fromCharCode = String.fromCharCode;\nvar b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\nfor (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {\n    b64tab[b64chars.charAt(base64_i)] = base64_i;\n}\nvar cb_utob = function (c) {\n    var cc = c.charCodeAt(0);\n    return cc < 0x80\n        ? c\n        : cc < 0x800\n            ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n            : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n                fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n                fromCharCode(0x80 | (cc & 0x3f));\n};\nvar utob = function (u) {\n    return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\nvar cb_encode = function (ccc) {\n    var padlen = [0, 2, 1][ccc.length % 3];\n    var ord = (ccc.charCodeAt(0) << 16) |\n        ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n        (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n    var chars = [\n        b64chars.charAt(ord >>> 18),\n        b64chars.charAt((ord >>> 12) & 63),\n        padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n        padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n    ];\n    return chars.join('');\n};\nvar btoa = window.btoa ||\n    function (b) {\n        return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n    };\n\n// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts\nclass Timer {\n    constructor(set, clear, delay, callback) {\n        this.clear = clear;\n        this.timer = set(() => {\n            if (this.timer) {\n                this.timer = callback(this.timer);\n            }\n        }, delay);\n    }\n    isRunning() {\n        return this.timer !== null;\n    }\n    ensureAborted() {\n        if (this.timer) {\n            this.clear(this.timer);\n            this.timer = null;\n        }\n    }\n}\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\n\nfunction timers_clearTimeout(timer) {\n    window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n    window.clearInterval(timer);\n}\nclass timers_OneOffTimer extends abstract_timer {\n    constructor(delay, callback) {\n        super(setTimeout, timers_clearTimeout, delay, function (timer) {\n            callback();\n            return null;\n        });\n    }\n}\nclass timers_PeriodicTimer extends abstract_timer {\n    constructor(delay, callback) {\n        super(setInterval, timers_clearInterval, delay, function (timer) {\n            callback();\n            return timer;\n        });\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n    now() {\n        if (Date.now) {\n            return Date.now();\n        }\n        else {\n            return new Date().valueOf();\n        }\n    },\n    defer(callback) {\n        return new timers_OneOffTimer(0, callback);\n    },\n    method(name, ...args) {\n        var boundArguments = Array.prototype.slice.call(arguments, 1);\n        return function (object) {\n            return object[name].apply(object, boundArguments.concat(arguments));\n        };\n    }\n};\n/* harmony default export */ var util = (Util);\n\n// CONCATENATED MODULE: ./src/core/utils/collections.ts\n\n\nfunction extend(target, ...sources) {\n    for (var i = 0; i < sources.length; i++) {\n        var extensions = sources[i];\n        for (var property in extensions) {\n            if (extensions[property] &&\n                extensions[property].constructor &&\n                extensions[property].constructor === Object) {\n                target[property] = extend(target[property] || {}, extensions[property]);\n            }\n            else {\n                target[property] = extensions[property];\n            }\n        }\n    }\n    return target;\n}\nfunction stringify() {\n    var m = ['Pusher'];\n    for (var i = 0; i < arguments.length; i++) {\n        if (typeof arguments[i] === 'string') {\n            m.push(arguments[i]);\n        }\n        else {\n            m.push(safeJSONStringify(arguments[i]));\n        }\n    }\n    return m.join(' : ');\n}\nfunction arrayIndexOf(array, item) {\n    var nativeIndexOf = Array.prototype.indexOf;\n    if (array === null) {\n        return -1;\n    }\n    if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n        return array.indexOf(item);\n    }\n    for (var i = 0, l = array.length; i < l; i++) {\n        if (array[i] === item) {\n            return i;\n        }\n    }\n    return -1;\n}\nfunction objectApply(object, f) {\n    for (var key in object) {\n        if (Object.prototype.hasOwnProperty.call(object, key)) {\n            f(object[key], key, object);\n        }\n    }\n}\nfunction keys(object) {\n    var keys = [];\n    objectApply(object, function (_, key) {\n        keys.push(key);\n    });\n    return keys;\n}\nfunction values(object) {\n    var values = [];\n    objectApply(object, function (value) {\n        values.push(value);\n    });\n    return values;\n}\nfunction apply(array, f, context) {\n    for (var i = 0; i < array.length; i++) {\n        f.call(context || window, array[i], i, array);\n    }\n}\nfunction map(array, f) {\n    var result = [];\n    for (var i = 0; i < array.length; i++) {\n        result.push(f(array[i], i, array, result));\n    }\n    return result;\n}\nfunction mapObject(object, f) {\n    var result = {};\n    objectApply(object, function (value, key) {\n        result[key] = f(value);\n    });\n    return result;\n}\nfunction filter(array, test) {\n    test =\n        test ||\n            function (value) {\n                return !!value;\n            };\n    var result = [];\n    for (var i = 0; i < array.length; i++) {\n        if (test(array[i], i, array, result)) {\n            result.push(array[i]);\n        }\n    }\n    return result;\n}\nfunction filterObject(object, test) {\n    var result = {};\n    objectApply(object, function (value, key) {\n        if ((test && test(value, key, object, result)) || Boolean(value)) {\n            result[key] = value;\n        }\n    });\n    return result;\n}\nfunction flatten(object) {\n    var result = [];\n    objectApply(object, function (value, key) {\n        result.push([key, value]);\n    });\n    return result;\n}\nfunction any(array, test) {\n    for (var i = 0; i < array.length; i++) {\n        if (test(array[i], i, array)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction collections_all(array, test) {\n    for (var i = 0; i < array.length; i++) {\n        if (!test(array[i], i, array)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction encodeParamsObject(data) {\n    return mapObject(data, function (value) {\n        if (typeof value === 'object') {\n            value = safeJSONStringify(value);\n        }\n        return encodeURIComponent(encode(value.toString()));\n    });\n}\nfunction buildQueryString(data) {\n    var params = filterObject(data, function (value) {\n        return value !== undefined;\n    });\n    var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');\n    return query;\n}\nfunction decycleObject(object) {\n    var objects = [], paths = [];\n    return (function derez(value, path) {\n        var i, name, nu;\n        switch (typeof value) {\n            case 'object':\n                if (!value) {\n                    return null;\n                }\n                for (i = 0; i < objects.length; i += 1) {\n                    if (objects[i] === value) {\n                        return { $ref: paths[i] };\n                    }\n                }\n                objects.push(value);\n                paths.push(path);\n                if (Object.prototype.toString.apply(value) === '[object Array]') {\n                    nu = [];\n                    for (i = 0; i < value.length; i += 1) {\n                        nu[i] = derez(value[i], path + '[' + i + ']');\n                    }\n                }\n                else {\n                    nu = {};\n                    for (name in value) {\n                        if (Object.prototype.hasOwnProperty.call(value, name)) {\n                            nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n                        }\n                    }\n                }\n                return nu;\n            case 'number':\n            case 'string':\n            case 'boolean':\n                return value;\n        }\n    })(object, '$');\n}\nfunction safeJSONStringify(source) {\n    try {\n        return JSON.stringify(source);\n    }\n    catch (e) {\n        return JSON.stringify(decycleObject(source));\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/logger.ts\n\n\nclass logger_Logger {\n    constructor() {\n        this.globalLog = (message) => {\n            if (window.console && window.console.log) {\n                window.console.log(message);\n            }\n        };\n    }\n    debug(...args) {\n        this.log(this.globalLog, args);\n    }\n    warn(...args) {\n        this.log(this.globalLogWarn, args);\n    }\n    error(...args) {\n        this.log(this.globalLogError, args);\n    }\n    globalLogWarn(message) {\n        if (window.console && window.console.warn) {\n            window.console.warn(message);\n        }\n        else {\n            this.globalLog(message);\n        }\n    }\n    globalLogError(message) {\n        if (window.console && window.console.error) {\n            window.console.error(message);\n        }\n        else {\n            this.globalLogWarn(message);\n        }\n    }\n    log(defaultLoggingFunction, ...args) {\n        var message = stringify.apply(this, arguments);\n        if (core_pusher.log) {\n            core_pusher.log(message);\n        }\n        else if (core_pusher.logToConsole) {\n            const log = defaultLoggingFunction.bind(this);\n            log(message);\n        }\n    }\n}\n/* harmony default export */ var logger = (new logger_Logger());\n\n// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts\n\nvar jsonp = function (context, query, authOptions, authRequestType, callback) {\n    if (authOptions.headers !== undefined ||\n        authOptions.headersProvider != null) {\n        logger.warn(`To send headers with the ${authRequestType.toString()} request, you must use AJAX, rather than JSONP.`);\n    }\n    var callbackName = context.nextAuthCallbackID.toString();\n    context.nextAuthCallbackID++;\n    var document = context.getDocument();\n    var script = document.createElement('script');\n    context.auth_callbacks[callbackName] = function (data) {\n        callback(null, data);\n    };\n    var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n    script.src =\n        authOptions.endpoint +\n            '?callback=' +\n            encodeURIComponent(callback_name) +\n            '&' +\n            query;\n    var head = document.getElementsByTagName('head')[0] || document.documentElement;\n    head.insertBefore(script, head.firstChild);\n};\n/* harmony default export */ var jsonp_auth = (jsonp);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts\nclass ScriptRequest {\n    constructor(src) {\n        this.src = src;\n    }\n    send(receiver) {\n        var self = this;\n        var errorString = 'Error loading ' + self.src;\n        self.script = document.createElement('script');\n        self.script.id = receiver.id;\n        self.script.src = self.src;\n        self.script.type = 'text/javascript';\n        self.script.charset = 'UTF-8';\n        if (self.script.addEventListener) {\n            self.script.onerror = function () {\n                receiver.callback(errorString);\n            };\n            self.script.onload = function () {\n                receiver.callback(null);\n            };\n        }\n        else {\n            self.script.onreadystatechange = function () {\n                if (self.script.readyState === 'loaded' ||\n                    self.script.readyState === 'complete') {\n                    receiver.callback(null);\n                }\n            };\n        }\n        if (self.script.async === undefined &&\n            document.attachEvent &&\n            /opera/i.test(navigator.userAgent)) {\n            self.errorScript = document.createElement('script');\n            self.errorScript.id = receiver.id + '_error';\n            self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n            self.script.async = self.errorScript.async = false;\n        }\n        else {\n            self.script.async = true;\n        }\n        var head = document.getElementsByTagName('head')[0];\n        head.insertBefore(self.script, head.firstChild);\n        if (self.errorScript) {\n            head.insertBefore(self.errorScript, self.script.nextSibling);\n        }\n    }\n    cleanup() {\n        if (this.script) {\n            this.script.onload = this.script.onerror = null;\n            this.script.onreadystatechange = null;\n        }\n        if (this.script && this.script.parentNode) {\n            this.script.parentNode.removeChild(this.script);\n        }\n        if (this.errorScript && this.errorScript.parentNode) {\n            this.errorScript.parentNode.removeChild(this.errorScript);\n        }\n        this.script = null;\n        this.errorScript = null;\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nclass jsonp_request_JSONPRequest {\n    constructor(url, data) {\n        this.url = url;\n        this.data = data;\n    }\n    send(receiver) {\n        if (this.request) {\n            return;\n        }\n        var query = buildQueryString(this.data);\n        var url = this.url + '/' + receiver.number + '?' + query;\n        this.request = runtime.createScriptRequest(url);\n        this.request.send(receiver);\n    }\n    cleanup() {\n        if (this.request) {\n            this.request.cleanup();\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts\n\n\nvar getAgent = function (sender, useTLS) {\n    return function (data, callback) {\n        var scheme = 'http' + (useTLS ? 's' : '') + '://';\n        var url = scheme + (sender.host || sender.options.host) + sender.options.path;\n        var request = runtime.createJSONPRequest(url, data);\n        var receiver = runtime.ScriptReceivers.create(function (error, result) {\n            ScriptReceivers.remove(receiver);\n            request.cleanup();\n            if (result && result.host) {\n                sender.host = result.host;\n            }\n            if (callback) {\n                callback(error, result);\n            }\n        });\n        request.send(receiver);\n    };\n};\nvar jsonp_timeline_jsonp = {\n    name: 'jsonp',\n    getAgent\n};\n/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);\n\n// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts\n\nfunction getGenericURL(baseScheme, params, path) {\n    var scheme = baseScheme + (params.useTLS ? 's' : '');\n    var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n    return scheme + '://' + host + path;\n}\nfunction getGenericPath(key, queryString) {\n    var path = '/app/' + key;\n    var query = '?protocol=' +\n        defaults.PROTOCOL +\n        '&client=js' +\n        '&version=' +\n        defaults.VERSION +\n        (queryString ? '&' + queryString : '');\n    return path + query;\n}\nvar ws = {\n    getInitial: function (key, params) {\n        var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n        return getGenericURL('ws', params, path);\n    }\n};\nvar http = {\n    getInitial: function (key, params) {\n        var path = (params.httpPath || '/pusher') + getGenericPath(key);\n        return getGenericURL('http', params, path);\n    }\n};\nvar sockjs = {\n    getInitial: function (key, params) {\n        return getGenericURL('http', params, params.httpPath || '/pusher');\n    },\n    getPath: function (key, params) {\n        return getGenericPath(key);\n    }\n};\n\n// CONCATENATED MODULE: ./src/core/events/callback_registry.ts\n\nclass callback_registry_CallbackRegistry {\n    constructor() {\n        this._callbacks = {};\n    }\n    get(name) {\n        return this._callbacks[prefix(name)];\n    }\n    add(name, callback, context) {\n        var prefixedEventName = prefix(name);\n        this._callbacks[prefixedEventName] =\n            this._callbacks[prefixedEventName] || [];\n        this._callbacks[prefixedEventName].push({\n            fn: callback,\n            context: context\n        });\n    }\n    remove(name, callback, context) {\n        if (!name && !callback && !context) {\n            this._callbacks = {};\n            return;\n        }\n        var names = name ? [prefix(name)] : keys(this._callbacks);\n        if (callback || context) {\n            this.removeCallback(names, callback, context);\n        }\n        else {\n            this.removeAllCallbacks(names);\n        }\n    }\n    removeCallback(names, callback, context) {\n        apply(names, function (name) {\n            this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {\n                return ((callback && callback !== binding.fn) ||\n                    (context && context !== binding.context));\n            });\n            if (this._callbacks[name].length === 0) {\n                delete this._callbacks[name];\n            }\n        }, this);\n    }\n    removeAllCallbacks(names) {\n        apply(names, function (name) {\n            delete this._callbacks[name];\n        }, this);\n    }\n}\nfunction prefix(name) {\n    return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nclass dispatcher_Dispatcher {\n    constructor(failThrough) {\n        this.callbacks = new callback_registry_CallbackRegistry();\n        this.global_callbacks = [];\n        this.failThrough = failThrough;\n    }\n    bind(eventName, callback, context) {\n        this.callbacks.add(eventName, callback, context);\n        return this;\n    }\n    bind_global(callback) {\n        this.global_callbacks.push(callback);\n        return this;\n    }\n    unbind(eventName, callback, context) {\n        this.callbacks.remove(eventName, callback, context);\n        return this;\n    }\n    unbind_global(callback) {\n        if (!callback) {\n            this.global_callbacks = [];\n            return this;\n        }\n        this.global_callbacks = filter(this.global_callbacks || [], c => c !== callback);\n        return this;\n    }\n    unbind_all() {\n        this.unbind();\n        this.unbind_global();\n        return this;\n    }\n    emit(eventName, data, metadata) {\n        for (var i = 0; i < this.global_callbacks.length; i++) {\n            this.global_callbacks[i](eventName, data);\n        }\n        var callbacks = this.callbacks.get(eventName);\n        var args = [];\n        if (metadata) {\n            args.push(data, metadata);\n        }\n        else if (data) {\n            args.push(data);\n        }\n        if (callbacks && callbacks.length > 0) {\n            for (var i = 0; i < callbacks.length; i++) {\n                callbacks[i].fn.apply(callbacks[i].context || window, args);\n            }\n        }\n        else if (this.failThrough) {\n            this.failThrough(eventName, data);\n        }\n        return this;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\n\n\n\n\n\nclass transport_connection_TransportConnection extends dispatcher_Dispatcher {\n    constructor(hooks, name, priority, key, options) {\n        super();\n        this.initialize = runtime.transportConnectionInitializer;\n        this.hooks = hooks;\n        this.name = name;\n        this.priority = priority;\n        this.key = key;\n        this.options = options;\n        this.state = 'new';\n        this.timeline = options.timeline;\n        this.activityTimeout = options.activityTimeout;\n        this.id = this.timeline.generateUniqueID();\n    }\n    handlesActivityChecks() {\n        return Boolean(this.hooks.handlesActivityChecks);\n    }\n    supportsPing() {\n        return Boolean(this.hooks.supportsPing);\n    }\n    connect() {\n        if (this.socket || this.state !== 'initialized') {\n            return false;\n        }\n        var url = this.hooks.urls.getInitial(this.key, this.options);\n        try {\n            this.socket = this.hooks.getSocket(url, this.options);\n        }\n        catch (e) {\n            util.defer(() => {\n                this.onError(e);\n                this.changeState('closed');\n            });\n            return false;\n        }\n        this.bindListeners();\n        logger.debug('Connecting', { transport: this.name, url });\n        this.changeState('connecting');\n        return true;\n    }\n    close() {\n        if (this.socket) {\n            this.socket.close();\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    send(data) {\n        if (this.state === 'open') {\n            util.defer(() => {\n                if (this.socket) {\n                    this.socket.send(data);\n                }\n            });\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    ping() {\n        if (this.state === 'open' && this.supportsPing()) {\n            this.socket.ping();\n        }\n    }\n    onOpen() {\n        if (this.hooks.beforeOpen) {\n            this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));\n        }\n        this.changeState('open');\n        this.socket.onopen = undefined;\n    }\n    onError(error) {\n        this.emit('error', { type: 'WebSocketError', error: error });\n        this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n    }\n    onClose(closeEvent) {\n        if (closeEvent) {\n            this.changeState('closed', {\n                code: closeEvent.code,\n                reason: closeEvent.reason,\n                wasClean: closeEvent.wasClean\n            });\n        }\n        else {\n            this.changeState('closed');\n        }\n        this.unbindListeners();\n        this.socket = undefined;\n    }\n    onMessage(message) {\n        this.emit('message', message);\n    }\n    onActivity() {\n        this.emit('activity');\n    }\n    bindListeners() {\n        this.socket.onopen = () => {\n            this.onOpen();\n        };\n        this.socket.onerror = error => {\n            this.onError(error);\n        };\n        this.socket.onclose = closeEvent => {\n            this.onClose(closeEvent);\n        };\n        this.socket.onmessage = message => {\n            this.onMessage(message);\n        };\n        if (this.supportsPing()) {\n            this.socket.onactivity = () => {\n                this.onActivity();\n            };\n        }\n    }\n    unbindListeners() {\n        if (this.socket) {\n            this.socket.onopen = undefined;\n            this.socket.onerror = undefined;\n            this.socket.onclose = undefined;\n            this.socket.onmessage = undefined;\n            if (this.supportsPing()) {\n                this.socket.onactivity = undefined;\n            }\n        }\n    }\n    changeState(state, params) {\n        this.state = state;\n        this.timeline.info(this.buildTimelineMessage({\n            state: state,\n            params: params\n        }));\n        this.emit(state, params);\n    }\n    buildTimelineMessage(message) {\n        return extend({ cid: this.id }, message);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nclass transport_Transport {\n    constructor(hooks) {\n        this.hooks = hooks;\n    }\n    isSupported(environment) {\n        return this.hooks.isSupported(environment);\n    }\n    createConnection(name, priority, key, options) {\n        return new transport_connection_TransportConnection(this.hooks, name, priority, key, options);\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transport_Transport({\n    urls: ws,\n    handlesActivityChecks: false,\n    supportsPing: false,\n    isInitialized: function () {\n        return Boolean(runtime.getWebSocketAPI());\n    },\n    isSupported: function () {\n        return Boolean(runtime.getWebSocketAPI());\n    },\n    getSocket: function (url) {\n        return runtime.createWebSocket(url);\n    }\n});\nvar httpConfiguration = {\n    urls: http,\n    handlesActivityChecks: false,\n    supportsPing: true,\n    isInitialized: function () {\n        return true;\n    }\n};\nvar streamingConfiguration = extend({\n    getSocket: function (url) {\n        return runtime.HTTPFactory.createStreamingSocket(url);\n    }\n}, httpConfiguration);\nvar pollingConfiguration = extend({\n    getSocket: function (url) {\n        return runtime.HTTPFactory.createPollingSocket(url);\n    }\n}, httpConfiguration);\nvar xhrConfiguration = {\n    isSupported: function () {\n        return runtime.isXHRSupported();\n    }\n};\nvar XHRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transport_Transport(extend({}, pollingConfiguration, xhrConfiguration));\nvar Transports = {\n    ws: WSTransport,\n    xhr_streaming: XHRStreamingTransport,\n    xhr_polling: XHRPollingTransport\n};\n/* harmony default export */ var transports = (Transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts\n\n\n\n\n\n\nvar SockJSTransport = new transport_Transport({\n    file: 'sockjs',\n    urls: sockjs,\n    handlesActivityChecks: true,\n    supportsPing: false,\n    isSupported: function () {\n        return true;\n    },\n    isInitialized: function () {\n        return window.SockJS !== undefined;\n    },\n    getSocket: function (url, options) {\n        return new window.SockJS(url, null, {\n            js_path: Dependencies.getPath('sockjs', {\n                useTLS: options.useTLS\n            }),\n            ignore_null_origin: options.ignoreNullOrigin\n        });\n    },\n    beforeOpen: function (socket, path) {\n        socket.send(JSON.stringify({\n            path: path\n        }));\n    }\n});\nvar xdrConfiguration = {\n    isSupported: function (environment) {\n        var yes = runtime.isXDRSupported(environment.useTLS);\n        return yes;\n    }\n};\nvar XDRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transport_Transport(extend({}, pollingConfiguration, xdrConfiguration));\ntransports.xdr_streaming = XDRStreamingTransport;\ntransports.xdr_polling = XDRPollingTransport;\ntransports.sockjs = SockJSTransport;\n/* harmony default export */ var transports_transports = (transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts\n\nclass net_info_NetInfo extends dispatcher_Dispatcher {\n    constructor() {\n        super();\n        var self = this;\n        if (window.addEventListener !== undefined) {\n            window.addEventListener('online', function () {\n                self.emit('online');\n            }, false);\n            window.addEventListener('offline', function () {\n                self.emit('offline');\n            }, false);\n        }\n    }\n    isOnline() {\n        if (window.navigator.onLine === undefined) {\n            return true;\n        }\n        else {\n            return window.navigator.onLine;\n        }\n    }\n}\nvar net_info_Network = new net_info_NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nclass assistant_to_the_transport_manager_AssistantToTheTransportManager {\n    constructor(manager, transport, options) {\n        this.manager = manager;\n        this.transport = transport;\n        this.minPingDelay = options.minPingDelay;\n        this.maxPingDelay = options.maxPingDelay;\n        this.pingDelay = undefined;\n    }\n    createConnection(name, priority, key, options) {\n        options = extend({}, options, {\n            activityTimeout: this.pingDelay\n        });\n        var connection = this.transport.createConnection(name, priority, key, options);\n        var openTimestamp = null;\n        var onOpen = function () {\n            connection.unbind('open', onOpen);\n            connection.bind('closed', onClosed);\n            openTimestamp = util.now();\n        };\n        var onClosed = closeEvent => {\n            connection.unbind('closed', onClosed);\n            if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n                this.manager.reportDeath();\n            }\n            else if (!closeEvent.wasClean && openTimestamp) {\n                var lifespan = util.now() - openTimestamp;\n                if (lifespan < 2 * this.maxPingDelay) {\n                    this.manager.reportDeath();\n                    this.pingDelay = Math.max(lifespan / 2, this.minPingDelay);\n                }\n            }\n        };\n        connection.bind('open', onOpen);\n        return connection;\n    }\n    isSupported(environment) {\n        return this.manager.isAlive() && this.transport.isSupported(environment);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nconst Protocol = {\n    decodeMessage: function (messageEvent) {\n        try {\n            var messageData = JSON.parse(messageEvent.data);\n            var pusherEventData = messageData.data;\n            if (typeof pusherEventData === 'string') {\n                try {\n                    pusherEventData = JSON.parse(messageData.data);\n                }\n                catch (e) { }\n            }\n            var pusherEvent = {\n                event: messageData.event,\n                channel: messageData.channel,\n                data: pusherEventData\n            };\n            if (messageData.user_id) {\n                pusherEvent.user_id = messageData.user_id;\n            }\n            return pusherEvent;\n        }\n        catch (e) {\n            throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n        }\n    },\n    encodeMessage: function (event) {\n        return JSON.stringify(event);\n    },\n    processHandshake: function (messageEvent) {\n        var message = Protocol.decodeMessage(messageEvent);\n        if (message.event === 'pusher:connection_established') {\n            if (!message.data.activity_timeout) {\n                throw 'No activity timeout specified in handshake';\n            }\n            return {\n                action: 'connected',\n                id: message.data.socket_id,\n                activityTimeout: message.data.activity_timeout * 1000\n            };\n        }\n        else if (message.event === 'pusher:error') {\n            return {\n                action: this.getCloseAction(message.data),\n                error: this.getCloseError(message.data)\n            };\n        }\n        else {\n            throw 'Invalid handshake';\n        }\n    },\n    getCloseAction: function (closeEvent) {\n        if (closeEvent.code < 4000) {\n            if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n                return 'backoff';\n            }\n            else {\n                return null;\n            }\n        }\n        else if (closeEvent.code === 4000) {\n            return 'tls_only';\n        }\n        else if (closeEvent.code < 4100) {\n            return 'refused';\n        }\n        else if (closeEvent.code < 4200) {\n            return 'backoff';\n        }\n        else if (closeEvent.code < 4300) {\n            return 'retry';\n        }\n        else {\n            return 'refused';\n        }\n    },\n    getCloseError: function (closeEvent) {\n        if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n            return {\n                type: 'PusherError',\n                data: {\n                    code: closeEvent.code,\n                    message: closeEvent.reason || closeEvent.message\n                }\n            };\n        }\n        else {\n            return null;\n        }\n    }\n};\n/* harmony default export */ var protocol_protocol = (Protocol);\n\n// CONCATENATED MODULE: ./src/core/connection/connection.ts\n\n\n\n\nclass connection_Connection extends dispatcher_Dispatcher {\n    constructor(id, transport) {\n        super();\n        this.id = id;\n        this.transport = transport;\n        this.activityTimeout = transport.activityTimeout;\n        this.bindListeners();\n    }\n    handlesActivityChecks() {\n        return this.transport.handlesActivityChecks();\n    }\n    send(data) {\n        return this.transport.send(data);\n    }\n    send_event(name, data, channel) {\n        var event = { event: name, data: data };\n        if (channel) {\n            event.channel = channel;\n        }\n        logger.debug('Event sent', event);\n        return this.send(protocol_protocol.encodeMessage(event));\n    }\n    ping() {\n        if (this.transport.supportsPing()) {\n            this.transport.ping();\n        }\n        else {\n            this.send_event('pusher:ping', {});\n        }\n    }\n    close() {\n        this.transport.close();\n    }\n    bindListeners() {\n        var listeners = {\n            message: (messageEvent) => {\n                var pusherEvent;\n                try {\n                    pusherEvent = protocol_protocol.decodeMessage(messageEvent);\n                }\n                catch (e) {\n                    this.emit('error', {\n                        type: 'MessageParseError',\n                        error: e,\n                        data: messageEvent.data\n                    });\n                }\n                if (pusherEvent !== undefined) {\n                    logger.debug('Event recd', pusherEvent);\n                    switch (pusherEvent.event) {\n                        case 'pusher:error':\n                            this.emit('error', {\n                                type: 'PusherError',\n                                data: pusherEvent.data\n                            });\n                            break;\n                        case 'pusher:ping':\n                            this.emit('ping');\n                            break;\n                        case 'pusher:pong':\n                            this.emit('pong');\n                            break;\n                    }\n                    this.emit('message', pusherEvent);\n                }\n            },\n            activity: () => {\n                this.emit('activity');\n            },\n            error: error => {\n                this.emit('error', error);\n            },\n            closed: closeEvent => {\n                unbindListeners();\n                if (closeEvent && closeEvent.code) {\n                    this.handleCloseEvent(closeEvent);\n                }\n                this.transport = null;\n                this.emit('closed');\n            }\n        };\n        var unbindListeners = () => {\n            objectApply(listeners, (listener, event) => {\n                this.transport.unbind(event, listener);\n            });\n        };\n        objectApply(listeners, (listener, event) => {\n            this.transport.bind(event, listener);\n        });\n    }\n    handleCloseEvent(closeEvent) {\n        var action = protocol_protocol.getCloseAction(closeEvent);\n        var error = protocol_protocol.getCloseError(closeEvent);\n        if (error) {\n            this.emit('error', error);\n        }\n        if (action) {\n            this.emit(action, { action: action, error: error });\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nclass handshake_Handshake {\n    constructor(transport, callback) {\n        this.transport = transport;\n        this.callback = callback;\n        this.bindListeners();\n    }\n    close() {\n        this.unbindListeners();\n        this.transport.close();\n    }\n    bindListeners() {\n        this.onMessage = m => {\n            this.unbindListeners();\n            var result;\n            try {\n                result = protocol_protocol.processHandshake(m);\n            }\n            catch (e) {\n                this.finish('error', { error: e });\n                this.transport.close();\n                return;\n            }\n            if (result.action === 'connected') {\n                this.finish('connected', {\n                    connection: new connection_Connection(result.id, this.transport),\n                    activityTimeout: result.activityTimeout\n                });\n            }\n            else {\n                this.finish(result.action, { error: result.error });\n                this.transport.close();\n            }\n        };\n        this.onClosed = closeEvent => {\n            this.unbindListeners();\n            var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';\n            var error = protocol_protocol.getCloseError(closeEvent);\n            this.finish(action, { error: error });\n        };\n        this.transport.bind('message', this.onMessage);\n        this.transport.bind('closed', this.onClosed);\n    }\n    unbindListeners() {\n        this.transport.unbind('message', this.onMessage);\n        this.transport.unbind('closed', this.onClosed);\n    }\n    finish(action, params) {\n        this.callback(extend({ transport: this.transport, action: action }, params));\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nclass timeline_sender_TimelineSender {\n    constructor(timeline, options) {\n        this.timeline = timeline;\n        this.options = options || {};\n    }\n    send(useTLS, callback) {\n        if (this.timeline.isEmpty()) {\n            return;\n        }\n        this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\n\n\n\n\n\nclass channel_Channel extends dispatcher_Dispatcher {\n    constructor(name, pusher) {\n        super(function (event, data) {\n            logger.debug('No callbacks on ' + name + ' for ' + event);\n        });\n        this.name = name;\n        this.pusher = pusher;\n        this.subscribed = false;\n        this.subscriptionPending = false;\n        this.subscriptionCancelled = false;\n    }\n    authorize(socketId, callback) {\n        return callback(null, { auth: '' });\n    }\n    trigger(event, data) {\n        if (event.indexOf('client-') !== 0) {\n            throw new BadEventName(\"Event '\" + event + \"' does not start with 'client-'\");\n        }\n        if (!this.subscribed) {\n            var suffix = url_store.buildLogSuffix('triggeringClientEvents');\n            logger.warn(`Client event triggered before channel 'subscription_succeeded' event . ${suffix}`);\n        }\n        return this.pusher.send_event(event, data, this.name);\n    }\n    disconnect() {\n        this.subscribed = false;\n        this.subscriptionPending = false;\n    }\n    handleEvent(event) {\n        var eventName = event.event;\n        var data = event.data;\n        if (eventName === 'pusher_internal:subscription_succeeded') {\n            this.handleSubscriptionSucceededEvent(event);\n        }\n        else if (eventName === 'pusher_internal:subscription_count') {\n            this.handleSubscriptionCountEvent(event);\n        }\n        else if (eventName.indexOf('pusher_internal:') !== 0) {\n            var metadata = {};\n            this.emit(eventName, data, metadata);\n        }\n    }\n    handleSubscriptionSucceededEvent(event) {\n        this.subscriptionPending = false;\n        this.subscribed = true;\n        if (this.subscriptionCancelled) {\n            this.pusher.unsubscribe(this.name);\n        }\n        else {\n            this.emit('pusher:subscription_succeeded', event.data);\n        }\n    }\n    handleSubscriptionCountEvent(event) {\n        if (event.data.subscription_count) {\n            this.subscriptionCount = event.data.subscription_count;\n        }\n        this.emit('pusher:subscription_count', event.data);\n    }\n    subscribe() {\n        if (this.subscribed) {\n            return;\n        }\n        this.subscriptionPending = true;\n        this.subscriptionCancelled = false;\n        this.authorize(this.pusher.connection.socket_id, (error, data) => {\n            if (error) {\n                this.subscriptionPending = false;\n                logger.error(error.toString());\n                this.emit('pusher:subscription_error', Object.assign({}, {\n                    type: 'AuthError',\n                    error: error.message\n                }, error instanceof HTTPAuthError ? { status: error.status } : {}));\n            }\n            else {\n                this.pusher.send_event('pusher:subscribe', {\n                    auth: data.auth,\n                    channel_data: data.channel_data,\n                    channel: this.name\n                });\n            }\n        });\n    }\n    unsubscribe() {\n        this.subscribed = false;\n        this.pusher.send_event('pusher:unsubscribe', {\n            channel: this.name\n        });\n    }\n    cancelSubscription() {\n        this.subscriptionCancelled = true;\n    }\n    reinstateSubscription() {\n        this.subscriptionCancelled = false;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\n\nclass private_channel_PrivateChannel extends channel_Channel {\n    authorize(socketId, callback) {\n        return this.pusher.config.channelAuthorizer({\n            channelName: this.name,\n            socketId: socketId\n        }, callback);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nclass members_Members {\n    constructor() {\n        this.reset();\n    }\n    get(id) {\n        if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n            return {\n                id: id,\n                info: this.members[id]\n            };\n        }\n        else {\n            return null;\n        }\n    }\n    each(callback) {\n        objectApply(this.members, (member, id) => {\n            callback(this.get(id));\n        });\n    }\n    setMyID(id) {\n        this.myID = id;\n    }\n    onSubscription(subscriptionData) {\n        this.members = subscriptionData.presence.hash;\n        this.count = subscriptionData.presence.count;\n        this.me = this.get(this.myID);\n    }\n    addMember(memberData) {\n        if (this.get(memberData.user_id) === null) {\n            this.count++;\n        }\n        this.members[memberData.user_id] = memberData.user_info;\n        return this.get(memberData.user_id);\n    }\n    removeMember(memberData) {\n        var member = this.get(memberData.user_id);\n        if (member) {\n            delete this.members[memberData.user_id];\n            this.count--;\n        }\n        return member;\n    }\n    reset() {\n        this.members = {};\n        this.count = 0;\n        this.myID = null;\n        this.me = null;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\n\n\n\n\nclass presence_channel_PresenceChannel extends private_channel_PrivateChannel {\n    constructor(name, pusher) {\n        super(name, pusher);\n        this.members = new members_Members();\n    }\n    authorize(socketId, callback) {\n        super.authorize(socketId, (error, authData) => __awaiter(this, void 0, void 0, function* () {\n            if (!error) {\n                authData = authData;\n                if (authData.channel_data != null) {\n                    var channelData = JSON.parse(authData.channel_data);\n                    this.members.setMyID(channelData.user_id);\n                }\n                else {\n                    yield this.pusher.user.signinDonePromise;\n                    if (this.pusher.user.user_data != null) {\n                        this.members.setMyID(this.pusher.user.user_data.id);\n                    }\n                    else {\n                        let suffix = url_store.buildLogSuffix('authorizationEndpoint');\n                        logger.error(`Invalid auth response for channel '${this.name}', ` +\n                            `expected 'channel_data' field. ${suffix}, ` +\n                            `or the user should be signed in.`);\n                        callback('Invalid auth response');\n                        return;\n                    }\n                }\n            }\n            callback(error, authData);\n        }));\n    }\n    handleEvent(event) {\n        var eventName = event.event;\n        if (eventName.indexOf('pusher_internal:') === 0) {\n            this.handleInternalEvent(event);\n        }\n        else {\n            var data = event.data;\n            var metadata = {};\n            if (event.user_id) {\n                metadata.user_id = event.user_id;\n            }\n            this.emit(eventName, data, metadata);\n        }\n    }\n    handleInternalEvent(event) {\n        var eventName = event.event;\n        var data = event.data;\n        switch (eventName) {\n            case 'pusher_internal:subscription_succeeded':\n                this.handleSubscriptionSucceededEvent(event);\n                break;\n            case 'pusher_internal:subscription_count':\n                this.handleSubscriptionCountEvent(event);\n                break;\n            case 'pusher_internal:member_added':\n                var addedMember = this.members.addMember(data);\n                this.emit('pusher:member_added', addedMember);\n                break;\n            case 'pusher_internal:member_removed':\n                var removedMember = this.members.removeMember(data);\n                if (removedMember) {\n                    this.emit('pusher:member_removed', removedMember);\n                }\n                break;\n        }\n    }\n    handleSubscriptionSucceededEvent(event) {\n        this.subscriptionPending = false;\n        this.subscribed = true;\n        if (this.subscriptionCancelled) {\n            this.pusher.unsubscribe(this.name);\n        }\n        else {\n            this.members.onSubscription(event.data);\n            this.emit('pusher:subscription_succeeded', this.members);\n        }\n    }\n    disconnect() {\n        this.members.reset();\n        super.disconnect();\n    }\n}\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js\nvar utf8 = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js\nvar base64 = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts\n\n\n\n\n\nclass encrypted_channel_EncryptedChannel extends private_channel_PrivateChannel {\n    constructor(name, pusher, nacl) {\n        super(name, pusher);\n        this.key = null;\n        this.nacl = nacl;\n    }\n    authorize(socketId, callback) {\n        super.authorize(socketId, (error, authData) => {\n            if (error) {\n                callback(error, authData);\n                return;\n            }\n            let sharedSecret = authData['shared_secret'];\n            if (!sharedSecret) {\n                callback(new Error(`No shared_secret key in auth payload for encrypted channel: ${this.name}`), null);\n                return;\n            }\n            this.key = Object(base64[\"decode\"])(sharedSecret);\n            delete authData['shared_secret'];\n            callback(null, authData);\n        });\n    }\n    trigger(event, data) {\n        throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n    }\n    handleEvent(event) {\n        var eventName = event.event;\n        var data = event.data;\n        if (eventName.indexOf('pusher_internal:') === 0 ||\n            eventName.indexOf('pusher:') === 0) {\n            super.handleEvent(event);\n            return;\n        }\n        this.handleEncryptedEvent(eventName, data);\n    }\n    handleEncryptedEvent(event, data) {\n        if (!this.key) {\n            logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');\n            return;\n        }\n        if (!data.ciphertext || !data.nonce) {\n            logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n                data);\n            return;\n        }\n        let cipherText = Object(base64[\"decode\"])(data.ciphertext);\n        if (cipherText.length < this.nacl.secretbox.overheadLength) {\n            logger.error(`Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${cipherText.length}`);\n            return;\n        }\n        let nonce = Object(base64[\"decode\"])(data.nonce);\n        if (nonce.length < this.nacl.secretbox.nonceLength) {\n            logger.error(`Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${nonce.length}`);\n            return;\n        }\n        let bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n        if (bytes === null) {\n            logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');\n            this.authorize(this.pusher.connection.socket_id, (error, authData) => {\n                if (error) {\n                    logger.error(`Failed to make a request to the authEndpoint: ${authData}. Unable to fetch new key, so dropping encrypted event`);\n                    return;\n                }\n                bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n                if (bytes === null) {\n                    logger.error(`Failed to decrypt event with new key. Dropping encrypted event`);\n                    return;\n                }\n                this.emit(event, this.getDataToEmit(bytes));\n                return;\n            });\n            return;\n        }\n        this.emit(event, this.getDataToEmit(bytes));\n    }\n    getDataToEmit(bytes) {\n        let raw = Object(utf8[\"decode\"])(bytes);\n        try {\n            return JSON.parse(raw);\n        }\n        catch (_a) {\n            return raw;\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\n\n\n\n\n\nclass connection_manager_ConnectionManager extends dispatcher_Dispatcher {\n    constructor(key, options) {\n        super();\n        this.state = 'initialized';\n        this.connection = null;\n        this.key = key;\n        this.options = options;\n        this.timeline = this.options.timeline;\n        this.usingTLS = this.options.useTLS;\n        this.errorCallbacks = this.buildErrorCallbacks();\n        this.connectionCallbacks = this.buildConnectionCallbacks(this.errorCallbacks);\n        this.handshakeCallbacks = this.buildHandshakeCallbacks(this.errorCallbacks);\n        var Network = runtime.getNetwork();\n        Network.bind('online', () => {\n            this.timeline.info({ netinfo: 'online' });\n            if (this.state === 'connecting' || this.state === 'unavailable') {\n                this.retryIn(0);\n            }\n        });\n        Network.bind('offline', () => {\n            this.timeline.info({ netinfo: 'offline' });\n            if (this.connection) {\n                this.sendActivityCheck();\n            }\n        });\n        this.updateStrategy();\n    }\n    connect() {\n        if (this.connection || this.runner) {\n            return;\n        }\n        if (!this.strategy.isSupported()) {\n            this.updateState('failed');\n            return;\n        }\n        this.updateState('connecting');\n        this.startConnecting();\n        this.setUnavailableTimer();\n    }\n    send(data) {\n        if (this.connection) {\n            return this.connection.send(data);\n        }\n        else {\n            return false;\n        }\n    }\n    send_event(name, data, channel) {\n        if (this.connection) {\n            return this.connection.send_event(name, data, channel);\n        }\n        else {\n            return false;\n        }\n    }\n    disconnect() {\n        this.disconnectInternally();\n        this.updateState('disconnected');\n    }\n    isUsingTLS() {\n        return this.usingTLS;\n    }\n    startConnecting() {\n        var callback = (error, handshake) => {\n            if (error) {\n                this.runner = this.strategy.connect(0, callback);\n            }\n            else {\n                if (handshake.action === 'error') {\n                    this.emit('error', {\n                        type: 'HandshakeError',\n                        error: handshake.error\n                    });\n                    this.timeline.error({ handshakeError: handshake.error });\n                }\n                else {\n                    this.abortConnecting();\n                    this.handshakeCallbacks[handshake.action](handshake);\n                }\n            }\n        };\n        this.runner = this.strategy.connect(0, callback);\n    }\n    abortConnecting() {\n        if (this.runner) {\n            this.runner.abort();\n            this.runner = null;\n        }\n    }\n    disconnectInternally() {\n        this.abortConnecting();\n        this.clearRetryTimer();\n        this.clearUnavailableTimer();\n        if (this.connection) {\n            var connection = this.abandonConnection();\n            connection.close();\n        }\n    }\n    updateStrategy() {\n        this.strategy = this.options.getStrategy({\n            key: this.key,\n            timeline: this.timeline,\n            useTLS: this.usingTLS\n        });\n    }\n    retryIn(delay) {\n        this.timeline.info({ action: 'retry', delay: delay });\n        if (delay > 0) {\n            this.emit('connecting_in', Math.round(delay / 1000));\n        }\n        this.retryTimer = new timers_OneOffTimer(delay || 0, () => {\n            this.disconnectInternally();\n            this.connect();\n        });\n    }\n    clearRetryTimer() {\n        if (this.retryTimer) {\n            this.retryTimer.ensureAborted();\n            this.retryTimer = null;\n        }\n    }\n    setUnavailableTimer() {\n        this.unavailableTimer = new timers_OneOffTimer(this.options.unavailableTimeout, () => {\n            this.updateState('unavailable');\n        });\n    }\n    clearUnavailableTimer() {\n        if (this.unavailableTimer) {\n            this.unavailableTimer.ensureAborted();\n        }\n    }\n    sendActivityCheck() {\n        this.stopActivityCheck();\n        this.connection.ping();\n        this.activityTimer = new timers_OneOffTimer(this.options.pongTimeout, () => {\n            this.timeline.error({ pong_timed_out: this.options.pongTimeout });\n            this.retryIn(0);\n        });\n    }\n    resetActivityCheck() {\n        this.stopActivityCheck();\n        if (this.connection && !this.connection.handlesActivityChecks()) {\n            this.activityTimer = new timers_OneOffTimer(this.activityTimeout, () => {\n                this.sendActivityCheck();\n            });\n        }\n    }\n    stopActivityCheck() {\n        if (this.activityTimer) {\n            this.activityTimer.ensureAborted();\n        }\n    }\n    buildConnectionCallbacks(errorCallbacks) {\n        return extend({}, errorCallbacks, {\n            message: message => {\n                this.resetActivityCheck();\n                this.emit('message', message);\n            },\n            ping: () => {\n                this.send_event('pusher:pong', {});\n            },\n            activity: () => {\n                this.resetActivityCheck();\n            },\n            error: error => {\n                this.emit('error', error);\n            },\n            closed: () => {\n                this.abandonConnection();\n                if (this.shouldRetry()) {\n                    this.retryIn(1000);\n                }\n            }\n        });\n    }\n    buildHandshakeCallbacks(errorCallbacks) {\n        return extend({}, errorCallbacks, {\n            connected: (handshake) => {\n                this.activityTimeout = Math.min(this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);\n                this.clearUnavailableTimer();\n                this.setConnection(handshake.connection);\n                this.socket_id = this.connection.id;\n                this.updateState('connected', { socket_id: this.socket_id });\n            }\n        });\n    }\n    buildErrorCallbacks() {\n        let withErrorEmitted = callback => {\n            return (result) => {\n                if (result.error) {\n                    this.emit('error', { type: 'WebSocketError', error: result.error });\n                }\n                callback(result);\n            };\n        };\n        return {\n            tls_only: withErrorEmitted(() => {\n                this.usingTLS = true;\n                this.updateStrategy();\n                this.retryIn(0);\n            }),\n            refused: withErrorEmitted(() => {\n                this.disconnect();\n            }),\n            backoff: withErrorEmitted(() => {\n                this.retryIn(1000);\n            }),\n            retry: withErrorEmitted(() => {\n                this.retryIn(0);\n            })\n        };\n    }\n    setConnection(connection) {\n        this.connection = connection;\n        for (var event in this.connectionCallbacks) {\n            this.connection.bind(event, this.connectionCallbacks[event]);\n        }\n        this.resetActivityCheck();\n    }\n    abandonConnection() {\n        if (!this.connection) {\n            return;\n        }\n        this.stopActivityCheck();\n        for (var event in this.connectionCallbacks) {\n            this.connection.unbind(event, this.connectionCallbacks[event]);\n        }\n        var connection = this.connection;\n        this.connection = null;\n        return connection;\n    }\n    updateState(newState, data) {\n        var previousState = this.state;\n        this.state = newState;\n        if (previousState !== newState) {\n            var newStateDescription = newState;\n            if (newStateDescription === 'connected') {\n                newStateDescription += ' with new socket ID ' + data.socket_id;\n            }\n            logger.debug('State changed', previousState + ' -> ' + newStateDescription);\n            this.timeline.info({ state: newState, params: data });\n            this.emit('state_change', { previous: previousState, current: newState });\n            this.emit(newState, data);\n        }\n    }\n    shouldRetry() {\n        return this.state === 'connecting' || this.state === 'connected';\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nclass channels_Channels {\n    constructor() {\n        this.channels = {};\n    }\n    add(name, pusher) {\n        if (!this.channels[name]) {\n            this.channels[name] = createChannel(name, pusher);\n        }\n        return this.channels[name];\n    }\n    all() {\n        return values(this.channels);\n    }\n    find(name) {\n        return this.channels[name];\n    }\n    remove(name) {\n        var channel = this.channels[name];\n        delete this.channels[name];\n        return channel;\n    }\n    disconnect() {\n        objectApply(this.channels, function (channel) {\n            channel.disconnect();\n        });\n    }\n}\nfunction createChannel(name, pusher) {\n    if (name.indexOf('private-encrypted-') === 0) {\n        if (pusher.config.nacl) {\n            return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n        }\n        let errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n        let suffix = url_store.buildLogSuffix('encryptedChannelSupport');\n        throw new UnsupportedFeature(`${errMsg}. ${suffix}`);\n    }\n    else if (name.indexOf('private-') === 0) {\n        return factory.createPrivateChannel(name, pusher);\n    }\n    else if (name.indexOf('presence-') === 0) {\n        return factory.createPresenceChannel(name, pusher);\n    }\n    else if (name.indexOf('#') === 0) {\n        throw new BadChannelName('Cannot create a channel with name \"' + name + '\".');\n    }\n    else {\n        return factory.createChannel(name, pusher);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/factory.ts\n\n\n\n\n\n\n\n\n\nvar Factory = {\n    createChannels() {\n        return new channels_Channels();\n    },\n    createConnectionManager(key, options) {\n        return new connection_manager_ConnectionManager(key, options);\n    },\n    createChannel(name, pusher) {\n        return new channel_Channel(name, pusher);\n    },\n    createPrivateChannel(name, pusher) {\n        return new private_channel_PrivateChannel(name, pusher);\n    },\n    createPresenceChannel(name, pusher) {\n        return new presence_channel_PresenceChannel(name, pusher);\n    },\n    createEncryptedChannel(name, pusher, nacl) {\n        return new encrypted_channel_EncryptedChannel(name, pusher, nacl);\n    },\n    createTimelineSender(timeline, options) {\n        return new timeline_sender_TimelineSender(timeline, options);\n    },\n    createHandshake(transport, callback) {\n        return new handshake_Handshake(transport, callback);\n    },\n    createAssistantToTheTransportManager(manager, transport, options) {\n        return new assistant_to_the_transport_manager_AssistantToTheTransportManager(manager, transport, options);\n    }\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nclass transport_manager_TransportManager {\n    constructor(options) {\n        this.options = options || {};\n        this.livesLeft = this.options.lives || Infinity;\n    }\n    getAssistant(transport) {\n        return factory.createAssistantToTheTransportManager(this, transport, {\n            minPingDelay: this.options.minPingDelay,\n            maxPingDelay: this.options.maxPingDelay\n        });\n    }\n    isAlive() {\n        return this.livesLeft > 0;\n    }\n    reportDeath() {\n        this.livesLeft -= 1;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nclass sequential_strategy_SequentialStrategy {\n    constructor(strategies, options) {\n        this.strategies = strategies;\n        this.loop = Boolean(options.loop);\n        this.failFast = Boolean(options.failFast);\n        this.timeout = options.timeout;\n        this.timeoutLimit = options.timeoutLimit;\n    }\n    isSupported() {\n        return any(this.strategies, util.method('isSupported'));\n    }\n    connect(minPriority, callback) {\n        var strategies = this.strategies;\n        var current = 0;\n        var timeout = this.timeout;\n        var runner = null;\n        var tryNextStrategy = (error, handshake) => {\n            if (handshake) {\n                callback(null, handshake);\n            }\n            else {\n                current = current + 1;\n                if (this.loop) {\n                    current = current % strategies.length;\n                }\n                if (current < strategies.length) {\n                    if (timeout) {\n                        timeout = timeout * 2;\n                        if (this.timeoutLimit) {\n                            timeout = Math.min(timeout, this.timeoutLimit);\n                        }\n                    }\n                    runner = this.tryStrategy(strategies[current], minPriority, { timeout, failFast: this.failFast }, tryNextStrategy);\n                }\n                else {\n                    callback(true);\n                }\n            }\n        };\n        runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);\n        return {\n            abort: function () {\n                runner.abort();\n            },\n            forceMinPriority: function (p) {\n                minPriority = p;\n                if (runner) {\n                    runner.forceMinPriority(p);\n                }\n            }\n        };\n    }\n    tryStrategy(strategy, minPriority, options, callback) {\n        var timer = null;\n        var runner = null;\n        if (options.timeout > 0) {\n            timer = new timers_OneOffTimer(options.timeout, function () {\n                runner.abort();\n                callback(true);\n            });\n        }\n        runner = strategy.connect(minPriority, function (error, handshake) {\n            if (error && timer && timer.isRunning() && !options.failFast) {\n                return;\n            }\n            if (timer) {\n                timer.ensureAborted();\n            }\n            callback(error, handshake);\n        });\n        return {\n            abort: function () {\n                if (timer) {\n                    timer.ensureAborted();\n                }\n                runner.abort();\n            },\n            forceMinPriority: function (p) {\n                runner.forceMinPriority(p);\n            }\n        };\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nclass best_connected_ever_strategy_BestConnectedEverStrategy {\n    constructor(strategies) {\n        this.strategies = strategies;\n    }\n    isSupported() {\n        return any(this.strategies, util.method('isSupported'));\n    }\n    connect(minPriority, callback) {\n        return connect(this.strategies, minPriority, function (i, runners) {\n            return function (error, handshake) {\n                runners[i].error = error;\n                if (error) {\n                    if (allRunnersFailed(runners)) {\n                        callback(true);\n                    }\n                    return;\n                }\n                apply(runners, function (runner) {\n                    runner.forceMinPriority(handshake.transport.priority);\n                });\n                callback(null, handshake);\n            };\n        });\n    }\n}\nfunction connect(strategies, minPriority, callbackBuilder) {\n    var runners = map(strategies, function (strategy, i, _, rs) {\n        return strategy.connect(minPriority, callbackBuilder(i, rs));\n    });\n    return {\n        abort: function () {\n            apply(runners, abortRunner);\n        },\n        forceMinPriority: function (p) {\n            apply(runners, function (runner) {\n                runner.forceMinPriority(p);\n            });\n        }\n    };\n}\nfunction allRunnersFailed(runners) {\n    return collections_all(runners, function (runner) {\n        return Boolean(runner.error);\n    });\n}\nfunction abortRunner(runner) {\n    if (!runner.error && !runner.aborted) {\n        runner.abort();\n        runner.aborted = true;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/websocket_prioritized_cached_strategy.ts\n\n\n\n\nclass websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy {\n    constructor(strategy, transports, options) {\n        this.strategy = strategy;\n        this.transports = transports;\n        this.ttl = options.ttl || 1800 * 1000;\n        this.usingTLS = options.useTLS;\n        this.timeline = options.timeline;\n    }\n    isSupported() {\n        return this.strategy.isSupported();\n    }\n    connect(minPriority, callback) {\n        var usingTLS = this.usingTLS;\n        var info = fetchTransportCache(usingTLS);\n        var cacheSkipCount = info && info.cacheSkipCount ? info.cacheSkipCount : 0;\n        var strategies = [this.strategy];\n        if (info && info.timestamp + this.ttl >= util.now()) {\n            var transport = this.transports[info.transport];\n            if (transport) {\n                if (['ws', 'wss'].includes(info.transport) || cacheSkipCount > 3) {\n                    this.timeline.info({\n                        cached: true,\n                        transport: info.transport,\n                        latency: info.latency\n                    });\n                    strategies.push(new sequential_strategy_SequentialStrategy([transport], {\n                        timeout: info.latency * 2 + 1000,\n                        failFast: true\n                    }));\n                }\n                else {\n                    cacheSkipCount++;\n                }\n            }\n        }\n        var startTimestamp = util.now();\n        var runner = strategies\n            .pop()\n            .connect(minPriority, function cb(error, handshake) {\n            if (error) {\n                flushTransportCache(usingTLS);\n                if (strategies.length > 0) {\n                    startTimestamp = util.now();\n                    runner = strategies.pop().connect(minPriority, cb);\n                }\n                else {\n                    callback(error);\n                }\n            }\n            else {\n                storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp, cacheSkipCount);\n                callback(null, handshake);\n            }\n        });\n        return {\n            abort: function () {\n                runner.abort();\n            },\n            forceMinPriority: function (p) {\n                minPriority = p;\n                if (runner) {\n                    runner.forceMinPriority(p);\n                }\n            }\n        };\n    }\n}\nfunction getTransportCacheKey(usingTLS) {\n    return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\nfunction fetchTransportCache(usingTLS) {\n    var storage = runtime.getLocalStorage();\n    if (storage) {\n        try {\n            var serializedCache = storage[getTransportCacheKey(usingTLS)];\n            if (serializedCache) {\n                return JSON.parse(serializedCache);\n            }\n        }\n        catch (e) {\n            flushTransportCache(usingTLS);\n        }\n    }\n    return null;\n}\nfunction storeTransportCache(usingTLS, transport, latency, cacheSkipCount) {\n    var storage = runtime.getLocalStorage();\n    if (storage) {\n        try {\n            storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({\n                timestamp: util.now(),\n                transport: transport,\n                latency: latency,\n                cacheSkipCount: cacheSkipCount\n            });\n        }\n        catch (e) {\n        }\n    }\n}\nfunction flushTransportCache(usingTLS) {\n    var storage = runtime.getLocalStorage();\n    if (storage) {\n        try {\n            delete storage[getTransportCacheKey(usingTLS)];\n        }\n        catch (e) {\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts\n\nclass delayed_strategy_DelayedStrategy {\n    constructor(strategy, { delay: number }) {\n        this.strategy = strategy;\n        this.options = { delay: number };\n    }\n    isSupported() {\n        return this.strategy.isSupported();\n    }\n    connect(minPriority, callback) {\n        var strategy = this.strategy;\n        var runner;\n        var timer = new timers_OneOffTimer(this.options.delay, function () {\n            runner = strategy.connect(minPriority, callback);\n        });\n        return {\n            abort: function () {\n                timer.ensureAborted();\n                if (runner) {\n                    runner.abort();\n                }\n            },\n            forceMinPriority: function (p) {\n                minPriority = p;\n                if (runner) {\n                    runner.forceMinPriority(p);\n                }\n            }\n        };\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nclass IfStrategy {\n    constructor(test, trueBranch, falseBranch) {\n        this.test = test;\n        this.trueBranch = trueBranch;\n        this.falseBranch = falseBranch;\n    }\n    isSupported() {\n        var branch = this.test() ? this.trueBranch : this.falseBranch;\n        return branch.isSupported();\n    }\n    connect(minPriority, callback) {\n        var branch = this.test() ? this.trueBranch : this.falseBranch;\n        return branch.connect(minPriority, callback);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nclass FirstConnectedStrategy {\n    constructor(strategy) {\n        this.strategy = strategy;\n    }\n    isSupported() {\n        return this.strategy.isSupported();\n    }\n    connect(minPriority, callback) {\n        var runner = this.strategy.connect(minPriority, function (error, handshake) {\n            if (handshake) {\n                runner.abort();\n            }\n            callback(error, handshake);\n        });\n        return runner;\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts\n\n\n\n\n\n\n\nfunction testSupportsStrategy(strategy) {\n    return function () {\n        return strategy.isSupported();\n    };\n}\nvar getDefaultStrategy = function (config, baseOptions, defineTransport) {\n    var definedTransports = {};\n    function defineTransportStrategy(name, type, priority, options, manager) {\n        var transport = defineTransport(config, name, type, priority, options, manager);\n        definedTransports[name] = transport;\n        return transport;\n    }\n    var ws_options = Object.assign({}, baseOptions, {\n        hostNonTLS: config.wsHost + ':' + config.wsPort,\n        hostTLS: config.wsHost + ':' + config.wssPort,\n        httpPath: config.wsPath\n    });\n    var wss_options = Object.assign({}, ws_options, {\n        useTLS: true\n    });\n    var sockjs_options = Object.assign({}, baseOptions, {\n        hostNonTLS: config.httpHost + ':' + config.httpPort,\n        hostTLS: config.httpHost + ':' + config.httpsPort,\n        httpPath: config.httpPath\n    });\n    var timeouts = {\n        loop: true,\n        timeout: 15000,\n        timeoutLimit: 60000\n    };\n    var ws_manager = new transport_manager_TransportManager({\n        minPingDelay: 10000,\n        maxPingDelay: config.activityTimeout\n    });\n    var streaming_manager = new transport_manager_TransportManager({\n        lives: 2,\n        minPingDelay: 10000,\n        maxPingDelay: config.activityTimeout\n    });\n    var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);\n    var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);\n    var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);\n    var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);\n    var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);\n    var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);\n    var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);\n    var ws_loop = new sequential_strategy_SequentialStrategy([ws_transport], timeouts);\n    var wss_loop = new sequential_strategy_SequentialStrategy([wss_transport], timeouts);\n    var sockjs_loop = new sequential_strategy_SequentialStrategy([sockjs_transport], timeouts);\n    var streaming_loop = new sequential_strategy_SequentialStrategy([\n        new IfStrategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)\n    ], timeouts);\n    var polling_loop = new sequential_strategy_SequentialStrategy([\n        new IfStrategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)\n    ], timeouts);\n    var http_loop = new sequential_strategy_SequentialStrategy([\n        new IfStrategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy_BestConnectedEverStrategy([\n            streaming_loop,\n            new delayed_strategy_DelayedStrategy(polling_loop, { delay: 4000 })\n        ]), polling_loop)\n    ], timeouts);\n    var http_fallback_loop = new IfStrategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n    var wsStrategy;\n    if (baseOptions.useTLS) {\n        wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n            ws_loop,\n            new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 2000 })\n        ]);\n    }\n    else {\n        wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n            ws_loop,\n            new delayed_strategy_DelayedStrategy(wss_loop, { delay: 2000 }),\n            new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 5000 })\n        ]);\n    }\n    return new websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy(new FirstConnectedStrategy(new IfStrategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {\n        ttl: 1800000,\n        timeline: baseOptions.timeline,\n        useTLS: baseOptions.useTLS\n    });\n};\n/* harmony default export */ var default_strategy = (getDefaultStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts\n\n/* harmony default export */ var transport_connection_initializer = (function () {\n    var self = this;\n    self.timeline.info(self.buildTimelineMessage({\n        transport: self.name + (self.options.useTLS ? 's' : '')\n    }));\n    if (self.hooks.isInitialized()) {\n        self.changeState('initialized');\n    }\n    else if (self.hooks.file) {\n        self.changeState('initializing');\n        Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {\n            if (self.hooks.isInitialized()) {\n                self.changeState('initialized');\n                callback(true);\n            }\n            else {\n                if (error) {\n                    self.onError(error);\n                }\n                self.onClose();\n                callback(false);\n            }\n        });\n    }\n    else {\n        self.onClose();\n    }\n});\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts\n\nvar http_xdomain_request_hooks = {\n    getRequest: function (socket) {\n        var xdr = new window.XDomainRequest();\n        xdr.ontimeout = function () {\n            socket.emit('error', new RequestTimedOut());\n            socket.close();\n        };\n        xdr.onerror = function (e) {\n            socket.emit('error', e);\n            socket.close();\n        };\n        xdr.onprogress = function () {\n            if (xdr.responseText && xdr.responseText.length > 0) {\n                socket.onChunk(200, xdr.responseText);\n            }\n        };\n        xdr.onload = function () {\n            if (xdr.responseText && xdr.responseText.length > 0) {\n                socket.onChunk(200, xdr.responseText);\n            }\n            socket.emit('finished', 200);\n            socket.close();\n        };\n        return xdr;\n    },\n    abortRequest: function (xdr) {\n        xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n        xdr.abort();\n    }\n};\n/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_request.ts\n\n\nconst MAX_BUFFER_LENGTH = 256 * 1024;\nclass http_request_HTTPRequest extends dispatcher_Dispatcher {\n    constructor(hooks, method, url) {\n        super();\n        this.hooks = hooks;\n        this.method = method;\n        this.url = url;\n    }\n    start(payload) {\n        this.position = 0;\n        this.xhr = this.hooks.getRequest(this);\n        this.unloader = () => {\n            this.close();\n        };\n        runtime.addUnloadListener(this.unloader);\n        this.xhr.open(this.method, this.url, true);\n        if (this.xhr.setRequestHeader) {\n            this.xhr.setRequestHeader('Content-Type', 'application/json');\n        }\n        this.xhr.send(payload);\n    }\n    close() {\n        if (this.unloader) {\n            runtime.removeUnloadListener(this.unloader);\n            this.unloader = null;\n        }\n        if (this.xhr) {\n            this.hooks.abortRequest(this.xhr);\n            this.xhr = null;\n        }\n    }\n    onChunk(status, data) {\n        while (true) {\n            var chunk = this.advanceBuffer(data);\n            if (chunk) {\n                this.emit('chunk', { status: status, data: chunk });\n            }\n            else {\n                break;\n            }\n        }\n        if (this.isBufferTooLong(data)) {\n            this.emit('buffer_too_long');\n        }\n    }\n    advanceBuffer(buffer) {\n        var unreadData = buffer.slice(this.position);\n        var endOfLinePosition = unreadData.indexOf('\\n');\n        if (endOfLinePosition !== -1) {\n            this.position += endOfLinePosition + 1;\n            return unreadData.slice(0, endOfLinePosition);\n        }\n        else {\n            return null;\n        }\n    }\n    isBufferTooLong(buffer) {\n        return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/http/state.ts\nvar State;\n(function (State) {\n    State[State[\"CONNECTING\"] = 0] = \"CONNECTING\";\n    State[State[\"OPEN\"] = 1] = \"OPEN\";\n    State[State[\"CLOSED\"] = 3] = \"CLOSED\";\n})(State || (State = {}));\n/* harmony default export */ var state = (State);\n\n// CONCATENATED MODULE: ./src/core/http/http_socket.ts\n\n\n\nvar autoIncrement = 1;\nclass http_socket_HTTPSocket {\n    constructor(hooks, url) {\n        this.hooks = hooks;\n        this.session = randomNumber(1000) + '/' + randomString(8);\n        this.location = getLocation(url);\n        this.readyState = state.CONNECTING;\n        this.openStream();\n    }\n    send(payload) {\n        return this.sendRaw(JSON.stringify([payload]));\n    }\n    ping() {\n        this.hooks.sendHeartbeat(this);\n    }\n    close(code, reason) {\n        this.onClose(code, reason, true);\n    }\n    sendRaw(payload) {\n        if (this.readyState === state.OPEN) {\n            try {\n                runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);\n                return true;\n            }\n            catch (e) {\n                return false;\n            }\n        }\n        else {\n            return false;\n        }\n    }\n    reconnect() {\n        this.closeStream();\n        this.openStream();\n    }\n    onClose(code, reason, wasClean) {\n        this.closeStream();\n        this.readyState = state.CLOSED;\n        if (this.onclose) {\n            this.onclose({\n                code: code,\n                reason: reason,\n                wasClean: wasClean\n            });\n        }\n    }\n    onChunk(chunk) {\n        if (chunk.status !== 200) {\n            return;\n        }\n        if (this.readyState === state.OPEN) {\n            this.onActivity();\n        }\n        var payload;\n        var type = chunk.data.slice(0, 1);\n        switch (type) {\n            case 'o':\n                payload = JSON.parse(chunk.data.slice(1) || '{}');\n                this.onOpen(payload);\n                break;\n            case 'a':\n                payload = JSON.parse(chunk.data.slice(1) || '[]');\n                for (var i = 0; i < payload.length; i++) {\n                    this.onEvent(payload[i]);\n                }\n                break;\n            case 'm':\n                payload = JSON.parse(chunk.data.slice(1) || 'null');\n                this.onEvent(payload);\n                break;\n            case 'h':\n                this.hooks.onHeartbeat(this);\n                break;\n            case 'c':\n                payload = JSON.parse(chunk.data.slice(1) || '[]');\n                this.onClose(payload[0], payload[1], true);\n                break;\n        }\n    }\n    onOpen(options) {\n        if (this.readyState === state.CONNECTING) {\n            if (options && options.hostname) {\n                this.location.base = replaceHost(this.location.base, options.hostname);\n            }\n            this.readyState = state.OPEN;\n            if (this.onopen) {\n                this.onopen();\n            }\n        }\n        else {\n            this.onClose(1006, 'Server lost session', true);\n        }\n    }\n    onEvent(event) {\n        if (this.readyState === state.OPEN && this.onmessage) {\n            this.onmessage({ data: event });\n        }\n    }\n    onActivity() {\n        if (this.onactivity) {\n            this.onactivity();\n        }\n    }\n    onError(error) {\n        if (this.onerror) {\n            this.onerror(error);\n        }\n    }\n    openStream() {\n        this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n        this.stream.bind('chunk', chunk => {\n            this.onChunk(chunk);\n        });\n        this.stream.bind('finished', status => {\n            this.hooks.onFinished(this, status);\n        });\n        this.stream.bind('buffer_too_long', () => {\n            this.reconnect();\n        });\n        try {\n            this.stream.start();\n        }\n        catch (error) {\n            util.defer(() => {\n                this.onError(error);\n                this.onClose(1006, 'Could not start streaming', false);\n            });\n        }\n    }\n    closeStream() {\n        if (this.stream) {\n            this.stream.unbind_all();\n            this.stream.close();\n            this.stream = null;\n        }\n    }\n}\nfunction getLocation(url) {\n    var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n    return {\n        base: parts[1],\n        queryString: parts[2]\n    };\n}\nfunction getSendURL(url, session) {\n    return url.base + '/' + session + '/xhr_send';\n}\nfunction getUniqueURL(url) {\n    var separator = url.indexOf('?') === -1 ? '?' : '&';\n    return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\nfunction replaceHost(url, hostname) {\n    var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n    return urlParts[1] + hostname + urlParts[3];\n}\nfunction randomNumber(max) {\n    return runtime.randomInt(max);\n}\nfunction randomString(length) {\n    var result = [];\n    for (var i = 0; i < length; i++) {\n        result.push(randomNumber(32).toString(32));\n    }\n    return result.join('');\n}\n/* harmony default export */ var http_socket = (http_socket_HTTPSocket);\n\n// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts\nvar http_streaming_socket_hooks = {\n    getReceiveURL: function (url, session) {\n        return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n    },\n    onHeartbeat: function (socket) {\n        socket.sendRaw('[]');\n    },\n    sendHeartbeat: function (socket) {\n        socket.sendRaw('[]');\n    },\n    onFinished: function (socket, status) {\n        socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n    }\n};\n/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts\nvar http_polling_socket_hooks = {\n    getReceiveURL: function (url, session) {\n        return url.base + '/' + session + '/xhr' + url.queryString;\n    },\n    onHeartbeat: function () {\n    },\n    sendHeartbeat: function (socket) {\n        socket.sendRaw('[]');\n    },\n    onFinished: function (socket, status) {\n        if (status === 200) {\n            socket.reconnect();\n        }\n        else {\n            socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n        }\n    }\n};\n/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts\n\nvar http_xhr_request_hooks = {\n    getRequest: function (socket) {\n        var Constructor = runtime.getXHRAPI();\n        var xhr = new Constructor();\n        xhr.onreadystatechange = xhr.onprogress = function () {\n            switch (xhr.readyState) {\n                case 3:\n                    if (xhr.responseText && xhr.responseText.length > 0) {\n                        socket.onChunk(xhr.status, xhr.responseText);\n                    }\n                    break;\n                case 4:\n                    if (xhr.responseText && xhr.responseText.length > 0) {\n                        socket.onChunk(xhr.status, xhr.responseText);\n                    }\n                    socket.emit('finished', xhr.status);\n                    socket.close();\n                    break;\n            }\n        };\n        return xhr;\n    },\n    abortRequest: function (xhr) {\n        xhr.onreadystatechange = null;\n        xhr.abort();\n    }\n};\n/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts\n\n\n\n\n\nvar HTTP = {\n    createStreamingSocket(url) {\n        return this.createSocket(http_streaming_socket, url);\n    },\n    createPollingSocket(url) {\n        return this.createSocket(http_polling_socket, url);\n    },\n    createSocket(hooks, url) {\n        return new http_socket(hooks, url);\n    },\n    createXHR(method, url) {\n        return this.createRequest(http_xhr_request, method, url);\n    },\n    createRequest(hooks, method, url) {\n        return new http_request_HTTPRequest(hooks, method, url);\n    }\n};\n/* harmony default export */ var http_http = (HTTP);\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts\n\n\nhttp_http.createXDR = function (method, url) {\n    return this.createRequest(http_xdomain_request, method, url);\n};\n/* harmony default export */ var web_http_http = (http_http);\n\n// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar Runtime = {\n    nextAuthCallbackID: 1,\n    auth_callbacks: {},\n    ScriptReceivers: ScriptReceivers,\n    DependenciesReceivers: DependenciesReceivers,\n    getDefaultStrategy: default_strategy,\n    Transports: transports_transports,\n    transportConnectionInitializer: transport_connection_initializer,\n    HTTPFactory: web_http_http,\n    TimelineTransport: jsonp_timeline,\n    getXHRAPI() {\n        return window.XMLHttpRequest;\n    },\n    getWebSocketAPI() {\n        return window.WebSocket || window.MozWebSocket;\n    },\n    setup(PusherClass) {\n        window.Pusher = PusherClass;\n        var initializeOnDocumentBody = () => {\n            this.onDocumentBody(PusherClass.ready);\n        };\n        if (!window.JSON) {\n            Dependencies.load('json2', {}, initializeOnDocumentBody);\n        }\n        else {\n            initializeOnDocumentBody();\n        }\n    },\n    getDocument() {\n        return document;\n    },\n    getProtocol() {\n        return this.getDocument().location.protocol;\n    },\n    getAuthorizers() {\n        return { ajax: xhr_auth, jsonp: jsonp_auth };\n    },\n    onDocumentBody(callback) {\n        if (document.body) {\n            callback();\n        }\n        else {\n            setTimeout(() => {\n                this.onDocumentBody(callback);\n            }, 0);\n        }\n    },\n    createJSONPRequest(url, data) {\n        return new jsonp_request_JSONPRequest(url, data);\n    },\n    createScriptRequest(src) {\n        return new ScriptRequest(src);\n    },\n    getLocalStorage() {\n        try {\n            return window.localStorage;\n        }\n        catch (e) {\n            return undefined;\n        }\n    },\n    createXHR() {\n        if (this.getXHRAPI()) {\n            return this.createXMLHttpRequest();\n        }\n        else {\n            return this.createMicrosoftXHR();\n        }\n    },\n    createXMLHttpRequest() {\n        var Constructor = this.getXHRAPI();\n        return new Constructor();\n    },\n    createMicrosoftXHR() {\n        return new ActiveXObject('Microsoft.XMLHTTP');\n    },\n    getNetwork() {\n        return net_info_Network;\n    },\n    createWebSocket(url) {\n        var Constructor = this.getWebSocketAPI();\n        return new Constructor(url);\n    },\n    createSocketRequest(method, url) {\n        if (this.isXHRSupported()) {\n            return this.HTTPFactory.createXHR(method, url);\n        }\n        else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n            return this.HTTPFactory.createXDR(method, url);\n        }\n        else {\n            throw 'Cross-origin HTTP requests are not supported';\n        }\n    },\n    isXHRSupported() {\n        var Constructor = this.getXHRAPI();\n        return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n    },\n    isXDRSupported(useTLS) {\n        var protocol = useTLS ? 'https:' : 'http:';\n        var documentProtocol = this.getProtocol();\n        return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n    },\n    addUnloadListener(listener) {\n        if (window.addEventListener !== undefined) {\n            window.addEventListener('unload', listener, false);\n        }\n        else if (window.attachEvent !== undefined) {\n            window.attachEvent('onunload', listener);\n        }\n    },\n    removeUnloadListener(listener) {\n        if (window.addEventListener !== undefined) {\n            window.removeEventListener('unload', listener, false);\n        }\n        else if (window.detachEvent !== undefined) {\n            window.detachEvent('onunload', listener);\n        }\n    },\n    randomInt(max) {\n        const random = function () {\n            const crypto = window.crypto || window['msCrypto'];\n            const random = crypto.getRandomValues(new Uint32Array(1))[0];\n            return random / Math.pow(2, 32);\n        };\n        return Math.floor(random() * max);\n    }\n};\n/* harmony default export */ var runtime = (Runtime);\n\n// CONCATENATED MODULE: ./src/core/timeline/level.ts\nvar TimelineLevel;\n(function (TimelineLevel) {\n    TimelineLevel[TimelineLevel[\"ERROR\"] = 3] = \"ERROR\";\n    TimelineLevel[TimelineLevel[\"INFO\"] = 6] = \"INFO\";\n    TimelineLevel[TimelineLevel[\"DEBUG\"] = 7] = \"DEBUG\";\n})(TimelineLevel || (TimelineLevel = {}));\n/* harmony default export */ var timeline_level = (TimelineLevel);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline.ts\n\n\n\nclass timeline_Timeline {\n    constructor(key, session, options) {\n        this.key = key;\n        this.session = session;\n        this.events = [];\n        this.options = options || {};\n        this.sent = 0;\n        this.uniqueID = 0;\n    }\n    log(level, event) {\n        if (level <= this.options.level) {\n            this.events.push(extend({}, event, { timestamp: util.now() }));\n            if (this.options.limit && this.events.length > this.options.limit) {\n                this.events.shift();\n            }\n        }\n    }\n    error(event) {\n        this.log(timeline_level.ERROR, event);\n    }\n    info(event) {\n        this.log(timeline_level.INFO, event);\n    }\n    debug(event) {\n        this.log(timeline_level.DEBUG, event);\n    }\n    isEmpty() {\n        return this.events.length === 0;\n    }\n    send(sendfn, callback) {\n        var data = extend({\n            session: this.session,\n            bundle: this.sent + 1,\n            key: this.key,\n            lib: 'js',\n            version: this.options.version,\n            cluster: this.options.cluster,\n            features: this.options.features,\n            timeline: this.events\n        }, this.options.params);\n        this.events = [];\n        sendfn(data, (error, result) => {\n            if (!error) {\n                this.sent++;\n            }\n            if (callback) {\n                callback(error, result);\n            }\n        });\n        return true;\n    }\n    generateUniqueID() {\n        this.uniqueID++;\n        return this.uniqueID;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nclass transport_strategy_TransportStrategy {\n    constructor(name, priority, transport, options) {\n        this.name = name;\n        this.priority = priority;\n        this.transport = transport;\n        this.options = options || {};\n    }\n    isSupported() {\n        return this.transport.isSupported({\n            useTLS: this.options.useTLS\n        });\n    }\n    connect(minPriority, callback) {\n        if (!this.isSupported()) {\n            return failAttempt(new UnsupportedStrategy(), callback);\n        }\n        else if (this.priority < minPriority) {\n            return failAttempt(new TransportPriorityTooLow(), callback);\n        }\n        var connected = false;\n        var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);\n        var handshake = null;\n        var onInitialized = function () {\n            transport.unbind('initialized', onInitialized);\n            transport.connect();\n        };\n        var onOpen = function () {\n            handshake = factory.createHandshake(transport, function (result) {\n                connected = true;\n                unbindListeners();\n                callback(null, result);\n            });\n        };\n        var onError = function (error) {\n            unbindListeners();\n            callback(error);\n        };\n        var onClosed = function () {\n            unbindListeners();\n            var serializedTransport;\n            serializedTransport = safeJSONStringify(transport);\n            callback(new TransportClosed(serializedTransport));\n        };\n        var unbindListeners = function () {\n            transport.unbind('initialized', onInitialized);\n            transport.unbind('open', onOpen);\n            transport.unbind('error', onError);\n            transport.unbind('closed', onClosed);\n        };\n        transport.bind('initialized', onInitialized);\n        transport.bind('open', onOpen);\n        transport.bind('error', onError);\n        transport.bind('closed', onClosed);\n        transport.initialize();\n        return {\n            abort: () => {\n                if (connected) {\n                    return;\n                }\n                unbindListeners();\n                if (handshake) {\n                    handshake.close();\n                }\n                else {\n                    transport.close();\n                }\n            },\n            forceMinPriority: p => {\n                if (connected) {\n                    return;\n                }\n                if (this.priority < p) {\n                    if (handshake) {\n                        handshake.close();\n                    }\n                    else {\n                        transport.close();\n                    }\n                }\n            }\n        };\n    }\n}\nfunction failAttempt(error, callback) {\n    util.defer(function () {\n        callback(error);\n    });\n    return {\n        abort: function () { },\n        forceMinPriority: function () { }\n    };\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts\n\n\n\n\n\nconst { Transports: strategy_builder_Transports } = runtime;\nvar strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {\n    var transportClass = strategy_builder_Transports[type];\n    if (!transportClass) {\n        throw new UnsupportedTransport(type);\n    }\n    var enabled = (!config.enabledTransports ||\n        arrayIndexOf(config.enabledTransports, name) !== -1) &&\n        (!config.disabledTransports ||\n            arrayIndexOf(config.disabledTransports, name) === -1);\n    var transport;\n    if (enabled) {\n        options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);\n        transport = new transport_strategy_TransportStrategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);\n    }\n    else {\n        transport = strategy_builder_UnsupportedStrategy;\n    }\n    return transport;\n};\nvar strategy_builder_UnsupportedStrategy = {\n    isSupported: function () {\n        return false;\n    },\n    connect: function (_, callback) {\n        var deferred = util.defer(function () {\n            callback(new UnsupportedStrategy());\n        });\n        return {\n            abort: function () {\n                deferred.ensureAborted();\n            },\n            forceMinPriority: function () { }\n        };\n    }\n};\n\n// CONCATENATED MODULE: ./src/core/options.ts\n\nfunction validateOptions(options) {\n    if (options == null) {\n        throw 'You must pass an options object';\n    }\n    if (options.cluster == null) {\n        throw 'Options object must provide a cluster';\n    }\n    if ('disableStats' in options) {\n        logger.warn('The disableStats option is deprecated in favor of enableStats');\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts\n\n\nconst composeChannelQuery = (params, authOptions) => {\n    var query = 'socket_id=' + encodeURIComponent(params.socketId);\n    for (var key in authOptions.params) {\n        query +=\n            '&' +\n                encodeURIComponent(key) +\n                '=' +\n                encodeURIComponent(authOptions.params[key]);\n    }\n    if (authOptions.paramsProvider != null) {\n        let dynamicParams = authOptions.paramsProvider();\n        for (var key in dynamicParams) {\n            query +=\n                '&' +\n                    encodeURIComponent(key) +\n                    '=' +\n                    encodeURIComponent(dynamicParams[key]);\n        }\n    }\n    return query;\n};\nconst UserAuthenticator = (authOptions) => {\n    if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n        throw `'${authOptions.transport}' is not a recognized auth transport`;\n    }\n    return (params, callback) => {\n        const query = composeChannelQuery(params, authOptions);\n        runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);\n    };\n};\n/* harmony default export */ var user_authenticator = (UserAuthenticator);\n\n// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts\n\n\nconst channel_authorizer_composeChannelQuery = (params, authOptions) => {\n    var query = 'socket_id=' + encodeURIComponent(params.socketId);\n    query += '&channel_name=' + encodeURIComponent(params.channelName);\n    for (var key in authOptions.params) {\n        query +=\n            '&' +\n                encodeURIComponent(key) +\n                '=' +\n                encodeURIComponent(authOptions.params[key]);\n    }\n    if (authOptions.paramsProvider != null) {\n        let dynamicParams = authOptions.paramsProvider();\n        for (var key in dynamicParams) {\n            query +=\n                '&' +\n                    encodeURIComponent(key) +\n                    '=' +\n                    encodeURIComponent(dynamicParams[key]);\n        }\n    }\n    return query;\n};\nconst ChannelAuthorizer = (authOptions) => {\n    if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n        throw `'${authOptions.transport}' is not a recognized auth transport`;\n    }\n    return (params, callback) => {\n        const query = channel_authorizer_composeChannelQuery(params, authOptions);\n        runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);\n    };\n};\n/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);\n\n// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts\nconst ChannelAuthorizerProxy = (pusher, authOptions, channelAuthorizerGenerator) => {\n    const deprecatedAuthorizerOptions = {\n        authTransport: authOptions.transport,\n        authEndpoint: authOptions.endpoint,\n        auth: {\n            params: authOptions.params,\n            headers: authOptions.headers\n        }\n    };\n    return (params, callback) => {\n        const channel = pusher.channel(params.channelName);\n        const channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n        channelAuthorizer.authorize(params.socketId, callback);\n    };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n    let config = {\n        activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n        cluster: opts.cluster,\n        httpPath: opts.httpPath || defaults.httpPath,\n        httpPort: opts.httpPort || defaults.httpPort,\n        httpsPort: opts.httpsPort || defaults.httpsPort,\n        pongTimeout: opts.pongTimeout || defaults.pongTimeout,\n        statsHost: opts.statsHost || defaults.stats_host,\n        unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,\n        wsPath: opts.wsPath || defaults.wsPath,\n        wsPort: opts.wsPort || defaults.wsPort,\n        wssPort: opts.wssPort || defaults.wssPort,\n        enableStats: getEnableStatsConfig(opts),\n        httpHost: getHttpHost(opts),\n        useTLS: shouldUseTLS(opts),\n        wsHost: getWebsocketHost(opts),\n        userAuthenticator: buildUserAuthenticator(opts),\n        channelAuthorizer: buildChannelAuthorizer(opts, pusher)\n    };\n    if ('disabledTransports' in opts)\n        config.disabledTransports = opts.disabledTransports;\n    if ('enabledTransports' in opts)\n        config.enabledTransports = opts.enabledTransports;\n    if ('ignoreNullOrigin' in opts)\n        config.ignoreNullOrigin = opts.ignoreNullOrigin;\n    if ('timelineParams' in opts)\n        config.timelineParams = opts.timelineParams;\n    if ('nacl' in opts) {\n        config.nacl = opts.nacl;\n    }\n    return config;\n}\nfunction getHttpHost(opts) {\n    if (opts.httpHost) {\n        return opts.httpHost;\n    }\n    if (opts.cluster) {\n        return `sockjs-${opts.cluster}.pusher.com`;\n    }\n    return defaults.httpHost;\n}\nfunction getWebsocketHost(opts) {\n    if (opts.wsHost) {\n        return opts.wsHost;\n    }\n    return getWebsocketHostFromCluster(opts.cluster);\n}\nfunction getWebsocketHostFromCluster(cluster) {\n    return `ws-${cluster}.pusher.com`;\n}\nfunction shouldUseTLS(opts) {\n    if (runtime.getProtocol() === 'https:') {\n        return true;\n    }\n    else if (opts.forceTLS === false) {\n        return false;\n    }\n    return true;\n}\nfunction getEnableStatsConfig(opts) {\n    if ('enableStats' in opts) {\n        return opts.enableStats;\n    }\n    if ('disableStats' in opts) {\n        return !opts.disableStats;\n    }\n    return false;\n}\nfunction buildUserAuthenticator(opts) {\n    const userAuthentication = Object.assign(Object.assign({}, defaults.userAuthentication), opts.userAuthentication);\n    if ('customHandler' in userAuthentication &&\n        userAuthentication['customHandler'] != null) {\n        return userAuthentication['customHandler'];\n    }\n    return user_authenticator(userAuthentication);\n}\nfunction buildChannelAuth(opts, pusher) {\n    let channelAuthorization;\n    if ('channelAuthorization' in opts) {\n        channelAuthorization = Object.assign(Object.assign({}, defaults.channelAuthorization), opts.channelAuthorization);\n    }\n    else {\n        channelAuthorization = {\n            transport: opts.authTransport || defaults.authTransport,\n            endpoint: opts.authEndpoint || defaults.authEndpoint\n        };\n        if ('auth' in opts) {\n            if ('params' in opts.auth)\n                channelAuthorization.params = opts.auth.params;\n            if ('headers' in opts.auth)\n                channelAuthorization.headers = opts.auth.headers;\n        }\n        if ('authorizer' in opts)\n            channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);\n    }\n    return channelAuthorization;\n}\nfunction buildChannelAuthorizer(opts, pusher) {\n    const channelAuthorization = buildChannelAuth(opts, pusher);\n    if ('customHandler' in channelAuthorization &&\n        channelAuthorization['customHandler'] != null) {\n        return channelAuthorization['customHandler'];\n    }\n    return channel_authorizer(channelAuthorization);\n}\n\n// CONCATENATED MODULE: ./src/core/watchlist.ts\n\n\nclass watchlist_WatchlistFacade extends dispatcher_Dispatcher {\n    constructor(pusher) {\n        super(function (eventName, data) {\n            logger.debug(`No callbacks on watchlist events for ${eventName}`);\n        });\n        this.pusher = pusher;\n        this.bindWatchlistInternalEvent();\n    }\n    handleEvent(pusherEvent) {\n        pusherEvent.data.events.forEach(watchlistEvent => {\n            this.emit(watchlistEvent.name, watchlistEvent);\n        });\n    }\n    bindWatchlistInternalEvent() {\n        this.pusher.connection.bind('message', pusherEvent => {\n            var eventName = pusherEvent.event;\n            if (eventName === 'pusher_internal:watchlist_events') {\n                this.handleEvent(pusherEvent);\n            }\n        });\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts\nfunction flatPromise() {\n    let resolve, reject;\n    const promise = new Promise((res, rej) => {\n        resolve = res;\n        reject = rej;\n    });\n    return { promise, resolve, reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\n\n\n\n\n\nclass user_UserFacade extends dispatcher_Dispatcher {\n    constructor(pusher) {\n        super(function (eventName, data) {\n            logger.debug('No callbacks on user for ' + eventName);\n        });\n        this.signin_requested = false;\n        this.user_data = null;\n        this.serverToUserChannel = null;\n        this.signinDonePromise = null;\n        this._signinDoneResolve = null;\n        this._onAuthorize = (err, authData) => {\n            if (err) {\n                logger.warn(`Error during signin: ${err}`);\n                this._cleanup();\n                return;\n            }\n            this.pusher.send_event('pusher:signin', {\n                auth: authData.auth,\n                user_data: authData.user_data\n            });\n        };\n        this.pusher = pusher;\n        this.pusher.connection.bind('state_change', ({ previous, current }) => {\n            if (previous !== 'connected' && current === 'connected') {\n                this._signin();\n            }\n            if (previous === 'connected' && current !== 'connected') {\n                this._cleanup();\n                this._newSigninPromiseIfNeeded();\n            }\n        });\n        this.watchlist = new watchlist_WatchlistFacade(pusher);\n        this.pusher.connection.bind('message', event => {\n            var eventName = event.event;\n            if (eventName === 'pusher:signin_success') {\n                this._onSigninSuccess(event.data);\n            }\n            if (this.serverToUserChannel &&\n                this.serverToUserChannel.name === event.channel) {\n                this.serverToUserChannel.handleEvent(event);\n            }\n        });\n    }\n    signin() {\n        if (this.signin_requested) {\n            return;\n        }\n        this.signin_requested = true;\n        this._signin();\n    }\n    _signin() {\n        if (!this.signin_requested) {\n            return;\n        }\n        this._newSigninPromiseIfNeeded();\n        if (this.pusher.connection.state !== 'connected') {\n            return;\n        }\n        this.pusher.config.userAuthenticator({\n            socketId: this.pusher.connection.socket_id\n        }, this._onAuthorize);\n    }\n    _onSigninSuccess(data) {\n        try {\n            this.user_data = JSON.parse(data.user_data);\n        }\n        catch (e) {\n            logger.error(`Failed parsing user data after signin: ${data.user_data}`);\n            this._cleanup();\n            return;\n        }\n        if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n            logger.error(`user_data doesn't contain an id. user_data: ${this.user_data}`);\n            this._cleanup();\n            return;\n        }\n        this._signinDoneResolve();\n        this._subscribeChannels();\n    }\n    _subscribeChannels() {\n        const ensure_subscribed = channel => {\n            if (channel.subscriptionPending && channel.subscriptionCancelled) {\n                channel.reinstateSubscription();\n            }\n            else if (!channel.subscriptionPending &&\n                this.pusher.connection.state === 'connected') {\n                channel.subscribe();\n            }\n        };\n        this.serverToUserChannel = new channel_Channel(`#server-to-user-${this.user_data.id}`, this.pusher);\n        this.serverToUserChannel.bind_global((eventName, data) => {\n            if (eventName.indexOf('pusher_internal:') === 0 ||\n                eventName.indexOf('pusher:') === 0) {\n                return;\n            }\n            this.emit(eventName, data);\n        });\n        ensure_subscribed(this.serverToUserChannel);\n    }\n    _cleanup() {\n        this.user_data = null;\n        if (this.serverToUserChannel) {\n            this.serverToUserChannel.unbind_all();\n            this.serverToUserChannel.disconnect();\n            this.serverToUserChannel = null;\n        }\n        if (this.signin_requested) {\n            this._signinDoneResolve();\n        }\n    }\n    _newSigninPromiseIfNeeded() {\n        if (!this.signin_requested) {\n            return;\n        }\n        if (this.signinDonePromise && !this.signinDonePromise.done) {\n            return;\n        }\n        const { promise, resolve, reject: _ } = flat_promise();\n        promise.done = false;\n        const setDone = () => {\n            promise.done = true;\n        };\n        promise.then(setDone).catch(setDone);\n        this.signinDonePromise = promise;\n        this._signinDoneResolve = resolve;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass pusher_Pusher {\n    static ready() {\n        pusher_Pusher.isReady = true;\n        for (var i = 0, l = pusher_Pusher.instances.length; i < l; i++) {\n            pusher_Pusher.instances[i].connect();\n        }\n    }\n    static getClientFeatures() {\n        return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n            return t.isSupported({});\n        }));\n    }\n    constructor(app_key, options) {\n        checkAppKey(app_key);\n        validateOptions(options);\n        this.key = app_key;\n        this.config = getConfig(options, this);\n        this.channels = factory.createChannels();\n        this.global_emitter = new dispatcher_Dispatcher();\n        this.sessionID = runtime.randomInt(1000000000);\n        this.timeline = new timeline_Timeline(this.key, this.sessionID, {\n            cluster: this.config.cluster,\n            features: pusher_Pusher.getClientFeatures(),\n            params: this.config.timelineParams || {},\n            limit: 50,\n            level: timeline_level.INFO,\n            version: defaults.VERSION\n        });\n        if (this.config.enableStats) {\n            this.timelineSender = factory.createTimelineSender(this.timeline, {\n                host: this.config.statsHost,\n                path: '/timeline/v2/' + runtime.TimelineTransport.name\n            });\n        }\n        var getStrategy = (options) => {\n            return runtime.getDefaultStrategy(this.config, options, strategy_builder_defineTransport);\n        };\n        this.connection = factory.createConnectionManager(this.key, {\n            getStrategy: getStrategy,\n            timeline: this.timeline,\n            activityTimeout: this.config.activityTimeout,\n            pongTimeout: this.config.pongTimeout,\n            unavailableTimeout: this.config.unavailableTimeout,\n            useTLS: Boolean(this.config.useTLS)\n        });\n        this.connection.bind('connected', () => {\n            this.subscribeAll();\n            if (this.timelineSender) {\n                this.timelineSender.send(this.connection.isUsingTLS());\n            }\n        });\n        this.connection.bind('message', event => {\n            var eventName = event.event;\n            var internal = eventName.indexOf('pusher_internal:') === 0;\n            if (event.channel) {\n                var channel = this.channel(event.channel);\n                if (channel) {\n                    channel.handleEvent(event);\n                }\n            }\n            if (!internal) {\n                this.global_emitter.emit(event.event, event.data);\n            }\n        });\n        this.connection.bind('connecting', () => {\n            this.channels.disconnect();\n        });\n        this.connection.bind('disconnected', () => {\n            this.channels.disconnect();\n        });\n        this.connection.bind('error', err => {\n            logger.warn(err);\n        });\n        pusher_Pusher.instances.push(this);\n        this.timeline.info({ instances: pusher_Pusher.instances.length });\n        this.user = new user_UserFacade(this);\n        if (pusher_Pusher.isReady) {\n            this.connect();\n        }\n    }\n    channel(name) {\n        return this.channels.find(name);\n    }\n    allChannels() {\n        return this.channels.all();\n    }\n    connect() {\n        this.connection.connect();\n        if (this.timelineSender) {\n            if (!this.timelineSenderTimer) {\n                var usingTLS = this.connection.isUsingTLS();\n                var timelineSender = this.timelineSender;\n                this.timelineSenderTimer = new timers_PeriodicTimer(60000, function () {\n                    timelineSender.send(usingTLS);\n                });\n            }\n        }\n    }\n    disconnect() {\n        this.connection.disconnect();\n        if (this.timelineSenderTimer) {\n            this.timelineSenderTimer.ensureAborted();\n            this.timelineSenderTimer = null;\n        }\n    }\n    bind(event_name, callback, context) {\n        this.global_emitter.bind(event_name, callback, context);\n        return this;\n    }\n    unbind(event_name, callback, context) {\n        this.global_emitter.unbind(event_name, callback, context);\n        return this;\n    }\n    bind_global(callback) {\n        this.global_emitter.bind_global(callback);\n        return this;\n    }\n    unbind_global(callback) {\n        this.global_emitter.unbind_global(callback);\n        return this;\n    }\n    unbind_all(callback) {\n        this.global_emitter.unbind_all();\n        return this;\n    }\n    subscribeAll() {\n        var channelName;\n        for (channelName in this.channels.channels) {\n            if (this.channels.channels.hasOwnProperty(channelName)) {\n                this.subscribe(channelName);\n            }\n        }\n    }\n    subscribe(channel_name) {\n        var channel = this.channels.add(channel_name, this);\n        if (channel.subscriptionPending && channel.subscriptionCancelled) {\n            channel.reinstateSubscription();\n        }\n        else if (!channel.subscriptionPending &&\n            this.connection.state === 'connected') {\n            channel.subscribe();\n        }\n        return channel;\n    }\n    unsubscribe(channel_name) {\n        var channel = this.channels.find(channel_name);\n        if (channel && channel.subscriptionPending) {\n            channel.cancelSubscription();\n        }\n        else {\n            channel = this.channels.remove(channel_name);\n            if (channel && channel.subscribed) {\n                channel.unsubscribe();\n            }\n        }\n    }\n    send_event(event_name, data, channel) {\n        return this.connection.send_event(event_name, data, channel);\n    }\n    shouldUseTLS() {\n        return this.config.useTLS;\n    }\n    signin() {\n        this.user.signin();\n    }\n}\npusher_Pusher.instances = [];\npusher_Pusher.isReady = false;\npusher_Pusher.logToConsole = false;\npusher_Pusher.Runtime = runtime;\npusher_Pusher.ScriptReceivers = runtime.ScriptReceivers;\npusher_Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\npusher_Pusher.auth_callbacks = runtime.auth_callbacks;\n/* harmony default export */ var core_pusher = __webpack_exports__[\"default\"] = (pusher_Pusher);\nfunction checkAppKey(key) {\n    if (key === null || key === undefined) {\n        throw 'You must pass your app key when you instantiate Pusher.';\n    }\n}\nruntime.setup(pusher_Pusher);\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pusher.js.map","import { useRef, useEffect, useState, useCallback } from 'react';\n\nimport Pusher from 'pusher-js';\n\nexport const ConnectionState = {\n  CONNECTING: 'connecting',\n  CONNECTED: 'connected',\n  ERROR: 'error'\n};\n\nexport function usePusherChannel({ key, cluster, channel: channelName, channelAuthUrl }) {\n  const pusherChannelRef = useRef(null);\n  const [connectionStatus, setConnectionStatus] = useState(ConnectionState.CONNECTING);\n  const prevConnectionStatusRef = useRef(ConnectionState.CONNECTING);\n  const [error, setError] = useState(null);\n  const onStatusChangeSubscribers = useRef([]);\n\n  const addOnStatusChangeSubscriber = useCallback((fn) => {\n    onStatusChangeSubscribers.current.push(fn)\n  }, [onStatusChangeSubscribers]);\n  const handleError = (pusherError) => {\n    setConnectionStatus(ConnectionState.ERROR);\n    setError(pusherError);\n  };\n\n  useEffect(() => {\n    const pusher = new Pusher(key, {\n      cluster: cluster,\n      channelAuthorization: {\n        endpoint: channelAuthUrl,\n        headersProvider: () => {\n          return {\n            \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content,\n          };\n        },\n      },\n    });\n\n    // https://pusher.com/docs/channels/using_channels/connection/#available-states\n    pusher.connection.bind('connecting', () => { setConnectionStatus(ConnectionState.CONNECTING)});\n    pusher.connection.bind('connected', () => { setConnectionStatus(ConnectionState.CONNECTED)});\n    pusher.connection.bind('unavailable', () => handleError());\n    pusher.connection.bind('error', (generalError) => handleError(generalError));\n\n    pusherChannelRef.current = pusher.subscribe(channelName);\n    pusherChannelRef.current.bind('pusher:subscription_error', subscriptionError => {\n      handleError(subscriptionError);\n    });\n\n    return () => pusher.unsubscribe(channelName);\n  }, [key, cluster, channelName]);\n\n  useEffect(() => {\n    onStatusChangeSubscribers.current.forEach(fn => fn(connectionStatus, prevConnectionStatusRef.current));\n    prevConnectionStatusRef.current = connectionStatus\n  }, [connectionStatus]);\n\n  return {\n    channel: pusherChannelRef.current,\n    connectionStatus,\n    error,\n    addOnStatusChangeSubscriber\n  }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classNames from 'classnames';\n\nexport function StatusBox({ type, className, children }) {\n  return (\n    <div className={classNames(`alert alert-${type} p-2`, className)} role='alert'>\n      {children}\n    </div>\n  );\n}\n\nStatusBox.propTypes = {\n  type: PropTypes.string,\n  className: PropTypes.string,\n  children: PropTypes.oneOfType([\n    PropTypes.node,\n    PropTypes.arrayOf(PropTypes.node),\n  ]),\n}\n\nStatusBox.defaultProps = {\n  className: null\n}\n","import React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ConnectionState } from './use-pusher-channel';\nimport { StatusBox } from '../status-box';\n\nexport function PusherConnectionStatus({\n  connectionStatus,\n  errorMessage,\n  statusClassName,\n}) {\n  switch (connectionStatus) {\n    case ConnectionState.CONNECTING:\n      return (\n        <StatusBox type=\"info\" className={statusClassName}>\n          <i className=\"fas fa-circle-notch fa-spin fa-lg mr-2 text-info\" />\n          Connecting…\n        </StatusBox>\n      );\n    case ConnectionState.ERROR:\n      return (\n        <StatusBox type=\"danger\" className={statusClassName}>\n          <i className=\"fas fa-exclamation-circle fa-lg mr-2 text-danger\" />\n          {errorMessage}\n        </StatusBox>\n      );\n    default:\n      return null; // connected\n  }\n}\n\nPusherConnectionStatus.propTypes = {\n  connectionStatus: PropTypes.oneOf(Object.values(ConnectionState)).isRequired,\n  errorMessage: PropTypes.string,\n  statusClassName: PropTypes.string,\n};\n\nPusherConnectionStatus.defaultProps = {\n  errorMessage:\n    'This service is temporarily unavailable. Please refresh and try again',\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ConnectionState } from './use-pusher-channel';\nimport { StatusBox } from '../status-box';\n\nconst isMinimumClientsConnected = (connectedClientCount, minimumClients) => Number(connectedClientCount) >= minimumClients\n\nexport function MinimumConnectedClientsNotification({ minimumClients, connectionStatus, channel, statusClassName, notificationMessage, onConnectedClientCountChange }) {\n  const [connectedClientCount, setConnectedClientCount] = useState(null);\n  const pusherNotReady = connectionStatus !== ConnectionState.CONNECTED;\n\n  useEffect(() => {\n    if (channel && connectionStatus === ConnectionState.CONNECTED) {\n      channel.bind('pusher:subscription_count', (data) => setConnectedClientCount(data.subscription_count));\n    }\n\n    return () => channel?.unbind('pusher:subscription_count', setConnectedClientCount);\n  }, [connectionStatus, channel]);\n\n  useEffect(() => {\n    if (onConnectedClientCountChange && connectedClientCount) {\n      onConnectedClientCountChange({\n        connectedClientCount,\n        minimumClientsConnected: isMinimumClientsConnected(connectedClientCount, minimumClients)\n      });\n    }\n  }, [connectedClientCount, onConnectedClientCountChange, minimumClients]);\n\n\n  if (pusherNotReady || isMinimumClientsConnected(connectedClientCount, minimumClients)) {\n    return null;\n  }\n\n  return (\n    <StatusBox type='info' className={statusClassName} >\n      <i className='far fa-hourglass fa-spin fa-lg mr-2 text-info' />\n\n      {notificationMessage}\n    </StatusBox>\n  )\n}\n\nMinimumConnectedClientsNotification.propTypes = {\n  minimumClients: PropTypes.number.isRequired,\n  connectionStatus: PropTypes.string,\n  channel: PropTypes.object,\n  statusClassName: PropTypes.string,\n  notificationMessage: PropTypes.string,\n  onConnectedClientCountChange: PropTypes.func\n}\n\nMinimumConnectedClientsNotification.defaultProps = {\n  notificationMessage: 'Waiting for all clients to connect'\n}\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePusherChannel, ConnectionState } from './use-pusher-channel';\nimport { PusherConnectionStatus } from './pusher-connection-status';\nimport { MinimumConnectedClientsNotification } from './minimum-connected-clients-notification';\n\nexport function PusherConnection({\n  children,\n  eventHandlers,\n  config,\n  statusClassName,\n  minimumClients,\n  minimumClientsMessage,\n}) {\n  const { connectionStatus, channel } = usePusherChannel(config);\n\n  useEffect(() => {\n    const eventNames = Object.keys(eventHandlers);\n\n    if (channel && eventNames.length) {\n      eventNames.forEach(eventName => {\n        const cb = eventHandlers[eventName];\n        channel.bind(eventName, event => cb(event));\n      });\n    }\n\n    return () => {\n      eventNames.forEach(eventName => {\n        const cb = eventHandlers[eventName];\n        channel?.unbind(eventName, cb);\n      });\n    };\n  }, [eventHandlers.keys, channel]);\n\n  return (\n    <div className=\"pusher-connection h-100\">\n      {connectionStatus === ConnectionState.CONNECTED && children}\n      {Boolean(minimumClients) && (\n        <MinimumConnectedClientsNotification\n          minimumClients={minimumClients}\n          connectionStatus={connectionStatus}\n          channel={channel}\n          statusClassName={statusClassName}\n          notificationMessage={minimumClientsMessage}\n        />\n      )}\n      <PusherConnectionStatus\n        connectionStatus={connectionStatus}\n        statusClassName={statusClassName}\n      />\n    </div>\n  );\n}\n\nPusherConnection.propTypes = {\n  children: PropTypes.oneOfType([\n    PropTypes.node,\n    PropTypes.arrayOf(PropTypes.node),\n  ]),\n  eventHandlers: PropTypes.objectOf(PropTypes.func),\n  config: PropTypes.shape({\n    key: PropTypes.string.isRequired,\n    cluster: PropTypes.string.isRequired,\n    channel: PropTypes.string.isRequired,\n  }).isRequired,\n  statusClassName: PropTypes.string,\n  minimumClients: PropTypes.number,\n  minimumClientsMessage: PropTypes.string,\n};\n\nPusherConnection.defaultProps = {\n  eventHandlers: {},\n};\n","// Update this with help from https://qr-code-styling.com/\n\nconst sizeInPixels     = 500,\n      marginInPixels   = 0,\n      backgroundColour = '#FFFFFF',\n      foregroundColour = '#000000';\n\nconst QRCodeStylingOptions = (uploadUrl, imageUrl, options = {}) => {\n  const { width = sizeInPixels, height = sizeInPixels } = options;\n\n  return {\n    \"width\": width,\n    \"height\": height,\n    \"margin\": marginInPixels,\n\n    \"qrOptions\": {\n      \"typeNumber\": \"0\",\n      \"mode\": \"Byte\",\n      \"errorCorrectionLevel\": \"Q\"\n    },\n\n    \"data\": uploadUrl,\n\n    \"image\": imageUrl,\n    \"imageOptions\": {\n      \"hideBackgroundDots\": true,\n      \"imageSize\": 0.5,\n      \"margin\": 5\n    },\n\n    \"backgroundOptions\": {\n      \"color\": backgroundColour\n    },\n    \"backgroundOptionsHelper\": dotOptionsHelper,\n\n    \"dotsOptions\": dotsOptions,\n    \"dotsOptionsHelper\": dotOptionsHelper,\n\n    \"cornersSquareOptions\": dotOptions,\n    \"cornersSquareOptionsHelper\": dotOptionsHelper,\n\n    \"cornersDotOptions\": dotOptions,\n    \"cornersDotOptionsHelper\": dotOptionsHelper\n  }\n}\n\nconst dotOptions = {\n  \"type\": \"dot\",\n  \"color\": foregroundColour\n};\n\nconst dotsOptions = {\n  \"type\": \"dots\",\n  \"color\": foregroundColour\n}\n\nconst dotOptionsHelper = {\n  \"colorType\": {\n    \"single\": true,\n    \"gradient\": false\n  }\n};\n\nexport default QRCodeStylingOptions;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,n,o=function(){var t=function(t,e){var r=t,n=a[e],o=null,i=0,u=null,v=[],w={},m=function(t,e){o=function(t){for(var e=new Array(t),r=0;r<t;r+=1){e[r]=new Array(t);for(var n=0;n<t;n+=1)e[r][n]=null}return e}(i=4*r+17),b(0,0),b(i-7,0),b(0,i-7),x(),_(),M(t,e),r>=7&&S(t),null==u&&(u=A(r,n,v)),C(u,e)},b=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var n=-1;n<=7;n+=1)e+n<=-1||i<=e+n||(o[t+r][e+n]=0<=r&&r<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=n&&n<=4)},_=function(){for(var t=8;t<i-8;t+=1)null==o[t][6]&&(o[t][6]=t%2==0);for(var e=8;e<i-8;e+=1)null==o[6][e]&&(o[6][e]=e%2==0)},x=function(){for(var t=s.getPatternPosition(r),e=0;e<t.length;e+=1)for(var n=0;n<t.length;n+=1){var i=t[e],a=t[n];if(null==o[i][a])for(var u=-2;u<=2;u+=1)for(var h=-2;h<=2;h+=1)o[i+u][a+h]=-2==u||2==u||-2==h||2==h||0==u&&0==h}},S=function(t){for(var e=s.getBCHTypeNumber(r),n=0;n<18;n+=1){var a=!t&&1==(e>>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1)a=!t&&1==(e>>n&1),o[n%3+i-8-3][Math.floor(n/3)]=a},M=function(t,e){for(var r=n<<3|e,a=s.getBCHTypeInfo(r),u=0;u<15;u+=1){var h=!t&&1==(a>>u&1);u<6?o[u][8]=h:u<8?o[u+1][8]=h:o[i-15+u][8]=h}for(u=0;u<15;u+=1)h=!t&&1==(a>>u&1),u<8?o[8][i-u-1]=h:u<9?o[8][15-u-1+1]=h:o[8][15-u-1]=h;o[i-8][8]=!t},C=function(t,e){for(var r=-1,n=i-1,a=7,u=0,h=s.getMaskFunction(e),c=i-1;c>0;c-=2)for(6==c&&(c-=1);;){for(var l=0;l<2;l+=1)if(null==o[n][c-l]){var d=!1;u<t.length&&(d=1==(t[u]>>>a&1)),h(n,c-l)&&(d=!d),o[n][c-l]=d,-1==(a-=1)&&(u+=1,a=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}},A=function(t,e,r){for(var n=c.getRSBlocks(t,e),o=l(),i=0;i<r.length;i+=1){var a=r[i];o.put(a.getMode(),4),o.put(a.getLength(),s.getLengthInBits(a.getMode(),t)),a.write(o)}var u=0;for(i=0;i<n.length;i+=1)u+=n[i].dataCount;if(o.getLengthInBits()>8*u)throw\"code length overflow. (\"+o.getLengthInBits()+\">\"+8*u+\")\";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,e){for(var r=0,n=0,o=0,i=new Array(e.length),a=new Array(e.length),u=0;u<e.length;u+=1){var c=e[u].dataCount,l=e[u].totalCount-c;n=Math.max(n,c),o=Math.max(o,l),i[u]=new Array(c);for(var d=0;d<i[u].length;d+=1)i[u][d]=255&t.getBuffer()[d+r];r+=c;var f=s.getErrorCorrectPolynomial(l),g=h(i[u],f.getLength()-1).mod(f);for(a[u]=new Array(f.getLength()-1),d=0;d<a[u].length;d+=1){var p=d+g.getLength()-a[u].length;a[u][d]=p>=0?g.getAt(p):0}}var v=0;for(d=0;d<e.length;d+=1)v+=e[d].totalCount;var w=new Array(v),y=0;for(d=0;d<n;d+=1)for(u=0;u<e.length;u+=1)d<i[u].length&&(w[y]=i[u][d],y+=1);for(d=0;d<o;d+=1)for(u=0;u<e.length;u+=1)d<a[u].length&&(w[y]=a[u][d],y+=1);return w}(o,n)};w.addData=function(t,e){var r=null;switch(e=e||\"Byte\"){case\"Numeric\":r=d(t);break;case\"Alphanumeric\":r=f(t);break;case\"Byte\":r=g(t);break;case\"Kanji\":r=p(t);break;default:throw\"mode:\"+e}v.push(r),u=null},w.isDark=function(t,e){if(t<0||i<=t||e<0||i<=e)throw t+\",\"+e;return o[t][e]},w.getModuleCount=function(){return i},w.make=function(){if(r<1){for(var t=1;t<40;t++){for(var e=c.getRSBlocks(t,n),o=l(),i=0;i<v.length;i++){var a=v[i];o.put(a.getMode(),4),o.put(a.getLength(),s.getLengthInBits(a.getMode(),t)),a.write(o)}var u=0;for(i=0;i<e.length;i++)u+=e[i].dataCount;if(o.getLengthInBits()<=8*u)break}r=t}m(!1,function(){for(var t=0,e=0,r=0;r<8;r+=1){m(!0,r);var n=s.getLostPoint(w);(0==r||t>n)&&(t=n,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r=\"\";r+='<table style=\"',r+=\" border-width: 0px; border-style: none;\",r+=\" border-collapse: collapse;\",r+=\" padding: 0px; margin: \"+(e=void 0===e?4*t:e)+\"px;\",r+='\">',r+=\"<tbody>\";for(var n=0;n<w.getModuleCount();n+=1){r+=\"<tr>\";for(var o=0;o<w.getModuleCount();o+=1)r+='<td style=\"',r+=\" border-width: 0px; border-style: none;\",r+=\" border-collapse: collapse;\",r+=\" padding: 0px; margin: 0px;\",r+=\" width: \"+t+\"px;\",r+=\" height: \"+t+\"px;\",r+=\" background-color: \",r+=w.isDark(n,o)?\"#000000\":\"#ffffff\",r+=\";\",r+='\"/>';r+=\"</tr>\"}return(r+=\"</tbody>\")+\"</table>\"},w.createSvgTag=function(t,e,r,n){var o={};\"object\"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,r=o.alt,n=o.title),t=t||2,e=void 0===e?4*t:e,(r=\"string\"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||\"qrcode-description\":null,(n=\"string\"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||\"qrcode-title\":null;var i,a,s,u,h=w.getModuleCount()*t+2*e,c=\"\";for(u=\"l\"+t+\",0 0,\"+t+\" -\"+t+\",0 0,-\"+t+\"z \",c+='<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"',c+=o.scalable?\"\":' width=\"'+h+'px\" height=\"'+h+'px\"',c+=' viewBox=\"0 0 '+h+\" \"+h+'\" ',c+=' preserveAspectRatio=\"xMinYMin meet\"',c+=n.text||r.text?' role=\"img\" aria-labelledby=\"'+k([n.id,r.id].join(\" \").trim())+'\"':\"\",c+=\">\",c+=n.text?'<title id=\"'+k(n.id)+'\">'+k(n.text)+\"</title>\":\"\",c+=r.text?'<description id=\"'+k(r.id)+'\">'+k(r.text)+\"</description>\":\"\",c+='<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>',c+='<path d=\"',a=0;a<w.getModuleCount();a+=1)for(s=a*t+e,i=0;i<w.getModuleCount();i+=1)w.isDark(a,i)&&(c+=\"M\"+(i*t+e)+\",\"+s+u);return(c+='\" stroke=\"transparent\" fill=\"black\"/>')+\"</svg>\"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,n=e,o=r-e;return y(r,r,(function(e,r){if(n<=e&&e<o&&n<=r&&r<o){var i=Math.floor((e-n)/t),a=Math.floor((r-n)/t);return w.isDark(a,i)?0:1}return 1}))},w.createImgTag=function(t,e,r){t=t||2,e=void 0===e?4*t:e;var n=w.getModuleCount()*t+2*e,o=\"\";return o+=\"<img\",o+=' src=\"',o+=w.createDataURL(t,e),o+='\"',o+=' width=\"',o+=n,o+='\"',o+=' height=\"',o+=n,o+='\"',r&&(o+=' alt=\"',o+=k(r),o+='\"'),o+\"/>\"};var k=function(t){for(var e=\"\",r=0;r<t.length;r+=1){var n=t.charAt(r);switch(n){case\"<\":e+=\"&lt;\";break;case\">\":e+=\"&gt;\";break;case\"&\":e+=\"&amp;\";break;case'\"':e+=\"&quot;\";break;default:e+=n}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,n,o,i,a=1*w.getModuleCount()+2*t,s=t,u=a-t,h={\"██\":\"█\",\"█ \":\"▀\",\" █\":\"▄\",\"  \":\" \"},c={\"██\":\"▀\",\"█ \":\"▀\",\" █\":\" \",\"  \":\" \"},l=\"\";for(e=0;e<a;e+=2){for(n=Math.floor((e-s)/1),o=Math.floor((e+1-s)/1),r=0;r<a;r+=1)i=\"█\",s<=r&&r<u&&s<=e&&e<u&&w.isDark(n,Math.floor((r-s)/1))&&(i=\" \"),s<=r&&r<u&&s<=e+1&&e+1<u&&w.isDark(o,Math.floor((r-s)/1))?i+=\" \":i+=\"█\",l+=t<1&&e+1>=u?c[i]:h[i];l+=\"\\n\"}return a%2&&t>0?l.substring(0,l.length-a-1)+Array(a+1).join(\"▀\"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,n,o,i,a=w.getModuleCount()*t+2*e,s=e,u=a-e,h=Array(t+1).join(\"██\"),c=Array(t+1).join(\"  \"),l=\"\",d=\"\";for(r=0;r<a;r+=1){for(o=Math.floor((r-s)/t),d=\"\",n=0;n<a;n+=1)i=1,s<=n&&n<u&&s<=r&&r<u&&w.isDark(o,Math.floor((n-s)/t))&&(i=0),d+=i?h:c;for(o=0;o<t;o+=1)l+=d+\"\\n\"}return l.substring(0,l.length-1)},w.renderTo2dContext=function(t,e){e=e||2;for(var r=w.getModuleCount(),n=0;n<r;n++)for(var o=0;o<r;o++)t.fillStyle=w.isDark(n,o)?\"black\":\"white\",t.fillRect(n*e,o*e,e,e)},w};t.stringToBytes=(t.stringToBytesFuncs={default:function(t){for(var e=[],r=0;r<t.length;r+=1){var n=t.charCodeAt(r);e.push(255&n)}return e}}).default,t.createStringToBytes=function(t,e){var r=function(){for(var r=w(t),n=function(){var t=r.read();if(-1==t)throw\"eof\";return t},o=0,i={};;){var a=r.read();if(-1==a)break;var s=n(),u=n()<<8|n();i[String.fromCharCode(a<<8|s)]=u,o+=1}if(o!=e)throw o+\" != \"+e;return i}(),n=\"?\".charCodeAt(0);return function(t){for(var e=[],o=0;o<t.length;o+=1){var i=t.charCodeAt(o);if(i<128)e.push(i);else{var a=r[t.charAt(o)];\"number\"==typeof a?(255&a)==a?e.push(a):(e.push(a>>>8),e.push(255&a)):e.push(n)}}return e}};var e,r,n,o,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,n=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<<i(e)-i(r);return 21522^(t<<10|e)},o.getBCHTypeNumber=function(t){for(var e=t<<12;i(e)-i(n)>=0;)e^=n<<i(e)-i(n);return t<<12|e},o.getPatternPosition=function(t){return e[t-1]},o.getMaskFunction=function(t){switch(t){case 0:return function(t,e){return(t+e)%2==0};case 1:return function(t,e){return t%2==0};case 2:return function(t,e){return e%3==0};case 3:return function(t,e){return(t+e)%3==0};case 4:return function(t,e){return(Math.floor(t/2)+Math.floor(e/3))%2==0};case 5:return function(t,e){return t*e%2+t*e%3==0};case 6:return function(t,e){return(t*e%2+t*e%3)%2==0};case 7:return function(t,e){return(t*e%3+(t+e)%2)%2==0};default:throw\"bad maskPattern:\"+t}},o.getErrorCorrectPolynomial=function(t){for(var e=h([1],0),r=0;r<t;r+=1)e=e.multiply(h([1,u.gexp(r)],0));return e},o.getLengthInBits=function(t,e){if(1<=e&&e<10)switch(t){case 1:return 10;case 2:return 9;case 4:case 8:return 8;default:throw\"mode:\"+t}else if(e<27)switch(t){case 1:return 12;case 2:return 11;case 4:return 16;case 8:return 10;default:throw\"mode:\"+t}else{if(!(e<41))throw\"type:\"+e;switch(t){case 1:return 14;case 2:return 13;case 4:return 16;case 8:return 12;default:throw\"mode:\"+t}}},o.getLostPoint=function(t){for(var e=t.getModuleCount(),r=0,n=0;n<e;n+=1)for(var o=0;o<e;o+=1){for(var i=0,a=t.isDark(n,o),s=-1;s<=1;s+=1)if(!(n+s<0||e<=n+s))for(var u=-1;u<=1;u+=1)o+u<0||e<=o+u||0==s&&0==u||a==t.isDark(n+s,o+u)&&(i+=1);i>5&&(r+=3+i-5)}for(n=0;n<e-1;n+=1)for(o=0;o<e-1;o+=1){var h=0;t.isDark(n,o)&&(h+=1),t.isDark(n+1,o)&&(h+=1),t.isDark(n,o+1)&&(h+=1),t.isDark(n+1,o+1)&&(h+=1),0!=h&&4!=h||(r+=3)}for(n=0;n<e;n+=1)for(o=0;o<e-6;o+=1)t.isDark(n,o)&&!t.isDark(n,o+1)&&t.isDark(n,o+2)&&t.isDark(n,o+3)&&t.isDark(n,o+4)&&!t.isDark(n,o+5)&&t.isDark(n,o+6)&&(r+=40);for(o=0;o<e;o+=1)for(n=0;n<e-6;n+=1)t.isDark(n,o)&&!t.isDark(n+1,o)&&t.isDark(n+2,o)&&t.isDark(n+3,o)&&t.isDark(n+4,o)&&!t.isDark(n+5,o)&&t.isDark(n+6,o)&&(r+=40);var c=0;for(o=0;o<e;o+=1)for(n=0;n<e;n+=1)t.isDark(n,o)&&(c+=1);return r+Math.abs(100*c/e/e-50)/5*10},o),u=function(){for(var t=new Array(256),e=new Array(256),r=0;r<8;r+=1)t[r]=1<<r;for(r=8;r<256;r+=1)t[r]=t[r-4]^t[r-5]^t[r-6]^t[r-8];for(r=0;r<255;r+=1)e[t[r]]=r;return{glog:function(t){if(t<1)throw\"glog(\"+t+\")\";return e[t]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return t[e]}}}();function h(t,e){if(void 0===t.length)throw t.length+\"/\"+e;var r=function(){for(var r=0;r<t.length&&0==t[r];)r+=1;for(var n=new Array(t.length-r+e),o=0;o<t.length-r;o+=1)n[o]=t[o+r];return n}(),n={getAt:function(t){return r[t]},getLength:function(){return r.length},multiply:function(t){for(var e=new Array(n.getLength()+t.getLength()-1),r=0;r<n.getLength();r+=1)for(var o=0;o<t.getLength();o+=1)e[r+o]^=u.gexp(u.glog(n.getAt(r))+u.glog(t.getAt(o)));return h(e,0)},mod:function(t){if(n.getLength()-t.getLength()<0)return n;for(var e=u.glog(n.getAt(0))-u.glog(t.getAt(0)),r=new Array(n.getLength()),o=0;o<n.getLength();o+=1)r[o]=n.getAt(o);for(o=0;o<t.getLength();o+=1)r[o]^=u.gexp(u.glog(t.getAt(o))+e);return h(r,0).mod(t)}};return n}var c=function(){var t=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],e=function(t,e){var r={};return r.totalCount=t,r.dataCount=e,r},r={getRSBlocks:function(r,n){var o=function(e,r){switch(r){case a.L:return t[4*(e-1)+0];case a.M:return t[4*(e-1)+1];case a.Q:return t[4*(e-1)+2];case a.H:return t[4*(e-1)+3];default:return}}(r,n);if(void 0===o)throw\"bad rs block @ typeNumber:\"+r+\"/errorCorrectionLevel:\"+n;for(var i=o.length/3,s=[],u=0;u<i;u+=1)for(var h=o[3*u+0],c=o[3*u+1],l=o[3*u+2],d=0;d<h;d+=1)s.push(e(c,l));return s}};return r}(),l=function(){var t=[],e=0,r={getBuffer:function(){return t},getAt:function(e){var r=Math.floor(e/8);return 1==(t[r]>>>7-e%8&1)},put:function(t,e){for(var n=0;n<e;n+=1)r.putBit(1==(t>>>e-n-1&1))},getLengthInBits:function(){return e},putBit:function(r){var n=Math.floor(e/8);t.length<=n&&t.push(0),r&&(t[n]|=128>>>e%8),e+=1}};return r},d=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+2<r.length;)t.put(n(r.substring(o,o+3)),10),o+=3;o<r.length&&(r.length-o==1?t.put(n(r.substring(o,o+1)),4):r.length-o==2&&t.put(n(r.substring(o,o+2)),7))}},n=function(t){for(var e=0,r=0;r<t.length;r+=1)e=10*e+o(t.charAt(r));return e},o=function(t){if(\"0\"<=t&&t<=\"9\")return t.charCodeAt(0)-\"0\".charCodeAt(0);throw\"illegal char :\"+t};return r},f=function(t){var e=t,r={getMode:function(){return 2},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+1<r.length;)t.put(45*n(r.charAt(o))+n(r.charAt(o+1)),11),o+=2;o<r.length&&t.put(n(r.charAt(o)),6)}},n=function(t){if(\"0\"<=t&&t<=\"9\")return t.charCodeAt(0)-\"0\".charCodeAt(0);if(\"A\"<=t&&t<=\"Z\")return t.charCodeAt(0)-\"A\".charCodeAt(0)+10;switch(t){case\" \":return 36;case\"$\":return 37;case\"%\":return 38;case\"*\":return 39;case\"+\":return 40;case\"-\":return 41;case\".\":return 42;case\"/\":return 43;case\":\":return 44;default:throw\"illegal char :\"+t}};return r},g=function(e){var r=t.stringToBytes(e);return{getMode:function(){return 4},getLength:function(t){return r.length},write:function(t){for(var e=0;e<r.length;e+=1)t.put(r[e],8)}}},p=function(e){var r=t.stringToBytesFuncs.SJIS;if(!r)throw\"sjis not supported.\";!function(t,e){var n=r(\"友\");if(2!=n.length||38726!=(n[0]<<8|n[1]))throw\"sjis not supported.\"}();var n=r(e);return{getMode:function(){return 8},getLength:function(t){return~~(n.length/2)},write:function(t){for(var e=n,r=0;r+1<e.length;){var o=(255&e[r])<<8|255&e[r+1];if(33088<=o&&o<=40956)o-=33088;else{if(!(57408<=o&&o<=60351))throw\"illegal char at \"+(r+1)+\"/\"+o;o-=49472}o=192*(o>>>8&255)+(255&o),t.put(o,13),r+=2}if(r<e.length)throw\"illegal char at \"+(r+1)}}},v=function(){var t=[],e={writeByte:function(e){t.push(255&e)},writeShort:function(t){e.writeByte(t),e.writeByte(t>>>8)},writeBytes:function(t,r,n){r=r||0,n=n||t.length;for(var o=0;o<n;o+=1)e.writeByte(t[o+r])},writeString:function(t){for(var r=0;r<t.length;r+=1)e.writeByte(t.charCodeAt(r))},toByteArray:function(){return t},toString:function(){var e=\"\";e+=\"[\";for(var r=0;r<t.length;r+=1)r>0&&(e+=\",\"),e+=t[r];return e+\"]\"}};return e},w=function(t){var e=t,r=0,n=0,o=0,i={read:function(){for(;o<8;){if(r>=e.length){if(0==o)return-1;throw\"unexpected end of file./\"+o}var t=e.charAt(r);if(r+=1,\"=\"==t)return o=0,-1;t.match(/^\\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw\"c:\"+t};return i},y=function(t,e,r){for(var n=function(t,e){var r=t,n=e,o=new Array(t*e),i={setPixel:function(t,e,n){o[e*r+t]=n},write:function(t){t.writeString(\"GIF87a\"),t.writeShort(r),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(\",\"),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(n),t.writeByte(0);var e=a(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(\";\")}},a=function(t){for(var e=1<<t,r=1+(1<<t),n=t+1,i=s(),a=0;a<e;a+=1)i.add(String.fromCharCode(a));i.add(String.fromCharCode(e)),i.add(String.fromCharCode(r));var u,h,c,l=v(),d=(u=l,h=0,c=0,{write:function(t,e){if(t>>>e!=0)throw\"length over\";for(;h+e>=8;)u.writeByte(255&(t<<h|c)),e-=8-h,t>>>=8-h,c=0,h=0;c|=t<<h,h+=e},flush:function(){h>0&&u.writeByte(c)}});d.write(e,n);var f=0,g=String.fromCharCode(o[f]);for(f+=1;f<o.length;){var p=String.fromCharCode(o[f]);f+=1,i.contains(g+p)?g+=p:(d.write(i.indexOf(g),n),i.size()<4095&&(i.size()==1<<n&&(n+=1),i.add(g+p)),g=p)}return d.write(i.indexOf(g),n),d.write(r,n),d.flush(),l.toByteArray()},s=function(){var t={},e=0,r={add:function(n){if(r.contains(n))throw\"dup key:\"+n;t[n]=e,e+=1},size:function(){return e},indexOf:function(e){return t[e]},contains:function(e){return void 0!==t[e]}};return r};return i}(t,e),o=0;o<e;o+=1)for(var i=0;i<t;i+=1)n.setPixel(i,o,r(i,o));var a=v();n.write(a);for(var s=function(){var t=0,e=0,r=0,n=\"\",o={},i=function(t){n+=String.fromCharCode(a(63&t))},a=function(t){if(t<0);else{if(t<26)return 65+t;if(t<52)return t-26+97;if(t<62)return t-52+48;if(62==t)return 43;if(63==t)return 47}throw\"n:\"+t};return o.writeByte=function(n){for(t=t<<8|255&n,e+=8,r+=1;e>=6;)i(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var o=3-r%3,a=0;a<o;a+=1)n+=\"=\"},o.toString=function(){return n},o}(),u=a.toByteArray(),h=0;h<u.length;h+=1)s.writeByte(u[h]);return s.flush(),\"data:image/gif;base64,\"+s};return t}();o.stringToBytesFuncs[\"UTF-8\"]=function(t){return function(t){for(var e=[],r=0;r<t.length;r++){var n=t.charCodeAt(r);n<128?e.push(n):n<2048?e.push(192|n>>6,128|63&n):n<55296||n>=57344?e.push(224|n>>12,128|n>>6&63,128|63&n):(r++,n=65536+((1023&n)<<10|1023&t.charCodeAt(r)),e.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return e}(t)},void 0===(n=\"function\"==typeof(r=function(){return o})?r.apply(e,[]):r)||(t.exports=n)},676:(t,e,r)=>{\"use strict\";r.d(e,{default:()=>q});var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},o=function(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),o=0;for(e=0;e<r;e++)for(var i=arguments[e],a=0,s=i.length;a<s;a++,o++)n[o]=i[a];return n},i=function(t){return!!t&&\"object\"==typeof t&&!Array.isArray(t)};function a(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(!e.length)return t;var s=e.shift();return void 0!==s&&i(t)&&i(s)?(t=n({},t),Object.keys(s).forEach((function(e){var r=t[e],n=s[e];Array.isArray(r)&&Array.isArray(n)?t[e]=n:i(r)&&i(n)?t[e]=a(Object.assign({},r),n):t[e]=n})),a.apply(void 0,o([t],e))):t}function s(t,e){var r=document.createElement(\"a\");r.download=e,r.href=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}function u(t){return e=this,r=void 0,o=function(){return function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}(this,(function(e){return[2,new Promise((function(e){var r=new XMLHttpRequest;r.onload=function(){var t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(r.response)},r.open(\"GET\",t),r.responseType=\"blob\",r.send()}))]}))},new((n=void 0)||(n=Promise))((function(t,i){function a(t){try{u(o.next(t))}catch(t){i(t)}}function s(t){try{u(o.throw(t))}catch(t){i(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,n,o}const h={L:.07,M:.15,Q:.25,H:.3};var c=function(){return(c=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};const l=function(){function t(t){var e=t.svg,r=t.type;this._svg=e,this._type=r}return t.prototype.draw=function(t,e,r,n){var o;switch(this._type){case\"dots\":o=this._drawDot;break;case\"classy\":o=this._drawClassy;break;case\"classy-rounded\":o=this._drawClassyRounded;break;case\"rounded\":o=this._drawRounded;break;case\"extra-rounded\":o=this._drawExtraRounded;break;case\"square\":default:o=this._drawSquare}o.call(this,{x:t,y:e,size:r,getNeighbor:n})},t.prototype._rotateFigure=function(t){var e,r=t.x,n=t.y,o=t.size,i=t.rotation,a=void 0===i?0:i,s=r+o/2,u=n+o/2;(0,t.draw)(),null===(e=this._element)||void 0===e||e.setAttribute(\"transform\",\"rotate(\"+180*a/Math.PI+\",\"+s+\",\"+u+\")\")},t.prototype._basicDot=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"circle\"),e._element.setAttribute(\"cx\",String(n+r/2)),e._element.setAttribute(\"cy\",String(o+r/2)),e._element.setAttribute(\"r\",String(r/2))}}))},t.prototype._basicSquare=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"),e._element.setAttribute(\"x\",String(n)),e._element.setAttribute(\"y\",String(o)),e._element.setAttribute(\"width\",String(r)),e._element.setAttribute(\"height\",String(r))}}))},t.prototype._basicSideRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, 0 \"+-r)}}))},t.prototype._basicCornerRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r+\"v \"+-r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, \"+-r/2+\" \"+-r/2)}}))},t.prototype._basicCornerExtraRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r+\"a \"+r+\" \"+r+\", 0, 0, 0, \"+-r+\" \"+-r)}}))},t.prototype._basicCornersRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, \"+r/2+\" \"+r/2+\"h \"+r/2+\"v \"+-r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, \"+-r/2+\" \"+-r/2)}}))},t.prototype._drawDot=function(t){var e=t.x,r=t.y,n=t.size;this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawSquare=function(t){var e=t.x,r=t.y,n=t.size;this._basicSquare({x:e,y:r,size:n,rotation:0})},t.prototype._drawRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,h=i+a+s+u;if(0!==h)if(h>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===h){var c=0;return i&&s?c=Math.PI/2:s&&a?c=Math.PI:a&&u&&(c=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,rotation:c})}if(1===h)return c=0,s?c=Math.PI/2:a?c=Math.PI:u&&(c=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:c})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,h=i+a+s+u;if(0!==h)if(h>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===h){var c=0;return i&&s?c=Math.PI/2:s&&a?c=Math.PI:a&&u&&(c=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:c})}if(1===h)return c=0,s?c=Math.PI/2:a?c=Math.PI:u&&(c=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:c})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t}();var d=function(){return(d=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};const f=function(){function t(t){var e=t.svg,r=t.type;this._svg=e,this._type=r}return t.prototype.draw=function(t,e,r,n){var o;switch(this._type){case\"square\":o=this._drawSquare;break;case\"extra-rounded\":o=this._drawExtraRounded;break;case\"dot\":default:o=this._drawDot}o.call(this,{x:t,y:e,size:r,rotation:n})},t.prototype._rotateFigure=function(t){var e,r=t.x,n=t.y,o=t.size,i=t.rotation,a=void 0===i?0:i,s=r+o/2,u=n+o/2;(0,t.draw)(),null===(e=this._element)||void 0===e||e.setAttribute(\"transform\",\"rotate(\"+180*a/Math.PI+\",\"+s+\",\"+u+\")\")},t.prototype._basicDot=function(t){var e=this,r=t.size,n=t.x,o=t.y,i=r/7;this._rotateFigure(d(d({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"clip-rule\",\"evenodd\"),e._element.setAttribute(\"d\",\"M \"+(n+r/2)+\" \"+o+\"a \"+r/2+\" \"+r/2+\" 0 1 0 0.1 0zm 0 \"+i+\"a \"+(r/2-i)+\" \"+(r/2-i)+\" 0 1 1 -0.1 0Z\")}}))},t.prototype._basicSquare=function(t){var e=this,r=t.size,n=t.x,o=t.y,i=r/7;this._rotateFigure(d(d({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"clip-rule\",\"evenodd\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r+\"v \"+-r+\"zM \"+(n+i)+\" \"+(o+i)+\"h \"+(r-2*i)+\"v \"+(r-2*i)+\"h \"+(2*i-r)+\"z\")}}))},t.prototype._basicExtraRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y,i=r/7;this._rotateFigure(d(d({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"clip-rule\",\"evenodd\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+(o+2.5*i)+\"v \"+2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*i+\" \"+2.5*i+\"h \"+2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*i+\" \"+2.5*-i+\"v \"+-2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*-i+\" \"+2.5*-i+\"h \"+-2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*-i+\" \"+2.5*i+\"M \"+(n+2.5*i)+\" \"+(o+i)+\"h \"+2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*i+\" \"+1.5*i+\"v \"+2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*-i+\" \"+1.5*i+\"h \"+-2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*-i+\" \"+1.5*-i+\"v \"+-2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*i+\" \"+1.5*-i)}}))},t.prototype._drawDot=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicDot({x:e,y:r,size:n,rotation:o})},t.prototype._drawSquare=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicSquare({x:e,y:r,size:n,rotation:o})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicExtraRounded({x:e,y:r,size:n,rotation:o})},t}();var g=function(){return(g=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};const p=function(){function t(t){var e=t.svg,r=t.type;this._svg=e,this._type=r}return t.prototype.draw=function(t,e,r,n){var o;switch(this._type){case\"square\":o=this._drawSquare;break;case\"dot\":default:o=this._drawDot}o.call(this,{x:t,y:e,size:r,rotation:n})},t.prototype._rotateFigure=function(t){var e,r=t.x,n=t.y,o=t.size,i=t.rotation,a=void 0===i?0:i,s=r+o/2,u=n+o/2;(0,t.draw)(),null===(e=this._element)||void 0===e||e.setAttribute(\"transform\",\"rotate(\"+180*a/Math.PI+\",\"+s+\",\"+u+\")\")},t.prototype._basicDot=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(g(g({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"circle\"),e._element.setAttribute(\"cx\",String(n+r/2)),e._element.setAttribute(\"cy\",String(o+r/2)),e._element.setAttribute(\"r\",String(r/2))}}))},t.prototype._basicSquare=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(g(g({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"),e._element.setAttribute(\"x\",String(n)),e._element.setAttribute(\"y\",String(o)),e._element.setAttribute(\"width\",String(r)),e._element.setAttribute(\"height\",String(r))}}))},t.prototype._drawDot=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicDot({x:e,y:r,size:n,rotation:o})},t.prototype._drawSquare=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicSquare({x:e,y:r,size:n,rotation:o})},t}(),v=\"circle\";var w=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},y=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},m=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],b=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];const _=function(){function t(t){this._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),this._element.setAttribute(\"width\",String(t.width)),this._element.setAttribute(\"height\",String(t.height)),this._defs=document.createElementNS(\"http://www.w3.org/2000/svg\",\"defs\"),this._element.appendChild(this._defs),this._options=t}return Object.defineProperty(t.prototype,\"width\",{get:function(){return this._options.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"height\",{get:function(){return this._options.height},enumerable:!1,configurable:!0}),t.prototype.getElement=function(){return this._element},t.prototype.drawQR=function(t){return w(this,void 0,void 0,(function(){var e,r,n,o,i,a,s,u,c,l,d=this;return y(this,(function(f){switch(f.label){case 0:return e=t.getModuleCount(),r=Math.min(this._options.width,this._options.height)-2*this._options.margin,n=this._options.shape===v?r/Math.sqrt(2):r,o=Math.floor(n/e),i={hideXDots:0,hideYDots:0,width:0,height:0},this._qr=t,this._options.image?[4,this.loadImage()]:[3,2];case 1:if(f.sent(),!this._image)return[2];a=this._options,s=a.imageOptions,u=a.qrOptions,c=s.imageSize*h[u.errorCorrectionLevel],l=Math.floor(c*e*e),i=function(t){var e=t.originalHeight,r=t.originalWidth,n=t.maxHiddenDots,o=t.maxHiddenAxisDots,i=t.dotSize,a={x:0,y:0},s={x:0,y:0};if(e<=0||r<=0||n<=0||i<=0)return{height:0,width:0,hideYDots:0,hideXDots:0};var u=e/r;return a.x=Math.floor(Math.sqrt(n/u)),a.x<=0&&(a.x=1),o&&o<a.x&&(a.x=o),a.x%2==0&&a.x--,s.x=a.x*i,a.y=1+2*Math.ceil((a.x*u-1)/2),s.y=Math.round(s.x*u),(a.y*a.x>n||o&&o<a.y)&&(o&&o<a.y?(a.y=o,a.y%2==0&&a.x--):a.y-=2,s.y=a.y*i,a.x=1+2*Math.ceil((a.y/u-1)/2),s.x=Math.round(s.y/u)),{height:s.y,width:s.x,hideYDots:a.y,hideXDots:a.x}}({originalWidth:this._image.width,originalHeight:this._image.height,maxHiddenDots:l,maxHiddenAxisDots:e-14,dotSize:o}),f.label=2;case 2:return this.drawBackground(),this.drawDots((function(t,r){var n,o,a,s,u,h;return!(d._options.imageOptions.hideBackgroundDots&&t>=(e-i.hideXDots)/2&&t<(e+i.hideXDots)/2&&r>=(e-i.hideYDots)/2&&r<(e+i.hideYDots)/2||(null===(n=m[t])||void 0===n?void 0:n[r])||(null===(o=m[t-e+7])||void 0===o?void 0:o[r])||(null===(a=m[t])||void 0===a?void 0:a[r-e+7])||(null===(s=b[t])||void 0===s?void 0:s[r])||(null===(u=b[t-e+7])||void 0===u?void 0:u[r])||(null===(h=b[t])||void 0===h?void 0:h[r-e+7]))})),this.drawCorners(),this._options.image?[4,this.drawImage({width:i.width,height:i.height,count:e,dotSize:o})]:[3,4];case 3:f.sent(),f.label=4;case 4:return[2]}}))}))},t.prototype.drawBackground=function(){var t,e,r,n=this._element,o=this._options;if(n){var i=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;if((i||a)&&this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:\"background-color\"}),null===(r=o.backgroundOptions)||void 0===r?void 0:r.round){var s=Math.min(o.width,o.height),u=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");this._backgroundClipPath=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\"),this._backgroundClipPath.setAttribute(\"id\",\"clip-path-background-color\"),this._defs.appendChild(this._backgroundClipPath),u.setAttribute(\"x\",String((o.width-s)/2)),u.setAttribute(\"y\",String((o.height-s)/2)),u.setAttribute(\"width\",String(s)),u.setAttribute(\"height\",String(s)),u.setAttribute(\"rx\",String(s/2*o.backgroundOptions.round)),this._backgroundClipPath.appendChild(u)}}},t.prototype.drawDots=function(t){var e,r,n=this;if(!this._qr)throw\"QR code is not defined\";var o=this._options,i=this._qr.getModuleCount();if(i>o.width||i>o.height)throw\"The canvas is too small.\";var a=Math.min(o.width,o.height)-2*o.margin,s=o.shape===v?a/Math.sqrt(2):a,u=Math.floor(s/i),h=Math.floor((o.width-i*u)/2),c=Math.floor((o.height-i*u)/2),d=new l({svg:this._element,type:o.dotsOptions.type});this._dotsClipPath=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\"),this._dotsClipPath.setAttribute(\"id\",\"clip-path-dot-color\"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(e=o.dotsOptions)||void 0===e?void 0:e.gradient,color:o.dotsOptions.color,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:\"dot-color\"});for(var f=function(e){for(var o=function(o){return t&&!t(e,o)?\"continue\":(null===(r=g._qr)||void 0===r?void 0:r.isDark(e,o))?(d.draw(h+e*u,c+o*u,u,(function(r,a){return!(e+r<0||o+a<0||e+r>=i||o+a>=i)&&!(t&&!t(e+r,o+a))&&!!n._qr&&n._qr.isDark(e+r,o+a)})),void(d._element&&g._dotsClipPath&&g._dotsClipPath.appendChild(d._element))):\"continue\"},a=0;a<i;a++)o(a)},g=this,p=0;p<i;p++)f(p);if(o.shape===v){var w=Math.floor((a/u-i)/2),y=i+2*w,m=h-w*u,b=c-w*u,_=[],x=Math.floor(y/2);for(p=0;p<y;p++){_[p]=[];for(var S=0;S<y;S++)p>=w-1&&p<=y-w&&S>=w-1&&S<=y-w||Math.sqrt((p-x)*(p-x)+(S-x)*(S-x))>x?_[p][S]=0:_[p][S]=this._qr.isDark(S-2*w<0?S:S>=i?S-2*w:S-w,p-2*w<0?p:p>=i?p-2*w:p-w)?1:0}var M=function(t){for(var e=function(e){if(!_[t][e])return\"continue\";d.draw(m+t*u,b+e*u,u,(function(r,n){var o;return!!(null===(o=_[t+r])||void 0===o?void 0:o[e+n])})),d._element&&C._dotsClipPath&&C._dotsClipPath.appendChild(d._element)},r=0;r<y;r++)e(r)},C=this;for(p=0;p<y;p++)M(p)}},t.prototype.drawCorners=function(){var t=this;if(!this._qr)throw\"QR code is not defined\";var e=this._element,r=this._options;if(!e)throw\"Element code is not defined\";var n=this._qr.getModuleCount(),o=Math.min(r.width,r.height)-2*r.margin,i=r.shape===v?o/Math.sqrt(2):o,a=Math.floor(i/n),s=7*a,u=3*a,h=Math.floor((r.width-n*a)/2),c=Math.floor((r.height-n*a)/2);[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((function(e){var o,i,d,g,v,w,y,_,x,S,M,C,A=e[0],k=e[1],O=e[2],D=h+A*a*(n-7),P=c+k*a*(n-7),z=t._dotsClipPath,B=t._dotsClipPath;if(((null===(o=r.cornersSquareOptions)||void 0===o?void 0:o.gradient)||(null===(i=r.cornersSquareOptions)||void 0===i?void 0:i.color))&&((z=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\")).setAttribute(\"id\",\"clip-path-corners-square-color-\"+A+\"-\"+k),t._defs.appendChild(z),t._cornersSquareClipPath=t._cornersDotClipPath=B=z,t._createColor({options:null===(d=r.cornersSquareOptions)||void 0===d?void 0:d.gradient,color:null===(g=r.cornersSquareOptions)||void 0===g?void 0:g.color,additionalRotation:O,x:D,y:P,height:s,width:s,name:\"corners-square-color-\"+A+\"-\"+k})),null===(v=r.cornersSquareOptions)||void 0===v?void 0:v.type){var q=new f({svg:t._element,type:r.cornersSquareOptions.type});q.draw(D,P,s,O),q._element&&z&&z.appendChild(q._element)}else for(var I=new l({svg:t._element,type:r.dotsOptions.type}),E=function(t){for(var e=function(e){if(!(null===(w=m[t])||void 0===w?void 0:w[e]))return\"continue\";I.draw(D+t*a,P+e*a,a,(function(r,n){var o;return!!(null===(o=m[t+r])||void 0===o?void 0:o[e+n])})),I._element&&z&&z.appendChild(I._element)},r=0;r<m[t].length;r++)e(r)},L=0;L<m.length;L++)E(L);if(((null===(y=r.cornersDotOptions)||void 0===y?void 0:y.gradient)||(null===(_=r.cornersDotOptions)||void 0===_?void 0:_.color))&&((B=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\")).setAttribute(\"id\",\"clip-path-corners-dot-color-\"+A+\"-\"+k),t._defs.appendChild(B),t._cornersDotClipPath=B,t._createColor({options:null===(x=r.cornersDotOptions)||void 0===x?void 0:x.gradient,color:null===(S=r.cornersDotOptions)||void 0===S?void 0:S.color,additionalRotation:O,x:D+2*a,y:P+2*a,height:u,width:u,name:\"corners-dot-color-\"+A+\"-\"+k})),null===(M=r.cornersDotOptions)||void 0===M?void 0:M.type){var R=new p({svg:t._element,type:r.cornersDotOptions.type});R.draw(D+2*a,P+2*a,u,O),R._element&&B&&B.appendChild(R._element)}else{I=new l({svg:t._element,type:r.dotsOptions.type});var N=function(t){for(var e=function(e){if(!(null===(C=b[t])||void 0===C?void 0:C[e]))return\"continue\";I.draw(D+t*a,P+e*a,a,(function(r,n){var o;return!!(null===(o=b[t+r])||void 0===o?void 0:o[e+n])})),I._element&&B&&B.appendChild(I._element)},r=0;r<b[t].length;r++)e(r)};for(L=0;L<b.length;L++)N(L)}}))},t.prototype.loadImage=function(){var t=this;return new Promise((function(e,r){var n=t._options,o=new Image;if(!n.image)return r(\"Image is not defined\");\"string\"==typeof n.imageOptions.crossOrigin&&(o.crossOrigin=n.imageOptions.crossOrigin),t._image=o,o.onload=function(){e()},o.src=n.image}))},t.prototype.drawImage=function(t){var e=t.width,r=t.height,n=t.count,o=t.dotSize;return w(this,void 0,void 0,(function(){var t,i,a,s,h,c,l,d,f;return y(this,(function(g){switch(g.label){case 0:return t=this._options,i=Math.floor((t.width-n*o)/2),a=Math.floor((t.height-n*o)/2),s=i+t.imageOptions.margin+(n*o-e)/2,h=a+t.imageOptions.margin+(n*o-r)/2,c=e-2*t.imageOptions.margin,l=r-2*t.imageOptions.margin,(d=document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\")).setAttribute(\"x\",String(s)),d.setAttribute(\"y\",String(h)),d.setAttribute(\"width\",c+\"px\"),d.setAttribute(\"height\",l+\"px\"),[4,u(t.image||\"\")];case 1:return f=g.sent(),d.setAttribute(\"href\",f||\"\"),this._element.appendChild(d),[2]}}))}))},t.prototype._createColor=function(t){var e=t.options,r=t.color,n=t.additionalRotation,o=t.x,i=t.y,a=t.height,s=t.width,u=t.name,h=s>a?s:a,c=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");if(c.setAttribute(\"x\",String(o)),c.setAttribute(\"y\",String(i)),c.setAttribute(\"height\",String(a)),c.setAttribute(\"width\",String(s)),c.setAttribute(\"clip-path\",\"url('#clip-path-\"+u+\"')\"),e){var l;if(\"radial\"===e.type)(l=document.createElementNS(\"http://www.w3.org/2000/svg\",\"radialGradient\")).setAttribute(\"id\",u),l.setAttribute(\"gradientUnits\",\"userSpaceOnUse\"),l.setAttribute(\"fx\",String(o+s/2)),l.setAttribute(\"fy\",String(i+a/2)),l.setAttribute(\"cx\",String(o+s/2)),l.setAttribute(\"cy\",String(i+a/2)),l.setAttribute(\"r\",String(h/2));else{var d=((e.rotation||0)+n)%(2*Math.PI),f=(d+2*Math.PI)%(2*Math.PI),g=o+s/2,p=i+a/2,v=o+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(g-=s/2,p-=a/2*Math.tan(d),v+=s/2,w+=a/2*Math.tan(d)):f>.25*Math.PI&&f<=.75*Math.PI?(p-=a/2,g-=s/2/Math.tan(d),w+=a/2,v+=s/2/Math.tan(d)):f>.75*Math.PI&&f<=1.25*Math.PI?(g+=s/2,p+=a/2*Math.tan(d),v-=s/2,w-=a/2*Math.tan(d)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(p+=a/2,g+=s/2/Math.tan(d),w-=a/2,v-=s/2/Math.tan(d)),(l=document.createElementNS(\"http://www.w3.org/2000/svg\",\"linearGradient\")).setAttribute(\"id\",u),l.setAttribute(\"gradientUnits\",\"userSpaceOnUse\"),l.setAttribute(\"x1\",String(Math.round(g))),l.setAttribute(\"y1\",String(Math.round(p))),l.setAttribute(\"x2\",String(Math.round(v))),l.setAttribute(\"y2\",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,n=document.createElementNS(\"http://www.w3.org/2000/svg\",\"stop\");n.setAttribute(\"offset\",100*e+\"%\"),n.setAttribute(\"stop-color\",r),l.appendChild(n)})),c.setAttribute(\"fill\",\"url('#\"+u+\"')\"),this._defs.appendChild(l)}else r&&c.setAttribute(\"fill\",r);this._element.appendChild(c)},t}(),x=\"canvas\";for(var S={},M=0;M<=40;M++)S[M]=M;const C={type:x,shape:\"square\",width:300,height:300,data:\"\",margin:0,qrOptions:{typeNumber:S[0],mode:void 0,errorCorrectionLevel:\"Q\"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:\"square\",color:\"#000\"},backgroundOptions:{round:0,color:\"#fff\"}};var A=function(){return(A=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function k(t){var e=A({},t);if(!e.colorStops||!e.colorStops.length)throw\"Field 'colorStops' is required in gradient\";return e.rotation?e.rotation=Number(e.rotation):e.rotation=0,e.colorStops=e.colorStops.map((function(t){return A(A({},t),{offset:Number(t.offset)})})),e}function O(t){var e=A({},t);return e.width=Number(e.width),e.height=Number(e.height),e.margin=Number(e.margin),e.imageOptions=A(A({},e.imageOptions),{hideBackgroundDots:Boolean(e.imageOptions.hideBackgroundDots),imageSize:Number(e.imageOptions.imageSize),margin:Number(e.imageOptions.margin)}),e.margin>Math.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=A({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=k(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=A({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=k(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=A({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=k(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=A({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=k(e.backgroundOptions.gradient))),e}var D=r(192),P=r.n(D),z=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},B=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}};const q=function(){function t(t){this._options=t?O(a(C,t)):C,this.update()}return t._clearContainer=function(t){t&&(t.innerHTML=\"\")},t.prototype._setupSvg=function(){var t=this;if(this._qr){var e=new _(this._options);this._svg=e.getElement(),this._svgDrawingPromise=e.drawQR(this._qr).then((function(){var r;t._svg&&(null===(r=t._extension)||void 0===r||r.call(t,e.getElement(),t._options))}))}},t.prototype._setupCanvas=function(){var t,e=this;this._qr&&(this._canvas=document.createElement(\"canvas\"),this._canvas.width=this._options.width,this._canvas.height=this._options.height,this._setupSvg(),this._canvasDrawingPromise=null===(t=this._svgDrawingPromise)||void 0===t?void 0:t.then((function(){if(e._svg){var t=e._svg,r=(new XMLSerializer).serializeToString(t),n=\"data:image/svg+xml;base64,\"+btoa(r),o=new Image;return new Promise((function(t){o.onload=function(){var r,n;null===(n=null===(r=e._canvas)||void 0===r?void 0:r.getContext(\"2d\"))||void 0===n||n.drawImage(o,0,0),t()},o.src=n}))}})))},t.prototype._getElement=function(t){return void 0===t&&(t=\"png\"),z(this,void 0,void 0,(function(){return B(this,(function(e){switch(e.label){case 0:if(!this._qr)throw\"QR code is empty\";return\"svg\"!==t.toLowerCase()?[3,2]:(this._svg&&this._svgDrawingPromise||this._setupSvg(),[4,this._svgDrawingPromise]);case 1:return e.sent(),[2,this._svg];case 2:return this._canvas&&this._canvasDrawingPromise||this._setupCanvas(),[4,this._canvasDrawingPromise];case 3:return e.sent(),[2,this._canvas]}}))}))},t.prototype.update=function(e){t._clearContainer(this._container),this._options=e?O(a(this._options,e)):this._options,this._options.data&&(this._qr=P()(this._options.qrOptions.typeNumber,this._options.qrOptions.errorCorrectionLevel),this._qr.addData(this._options.data,this._options.qrOptions.mode||function(t){switch(!0){case/^[0-9]*$/.test(t):return\"Numeric\";case/^[0-9A-Z $%*+\\-./:]*$/.test(t):return\"Alphanumeric\";default:return\"Byte\"}}(this._options.data)),this._qr.make(),this._options.type===x?this._setupCanvas():this._setupSvg(),this.append(this._container))},t.prototype.append=function(t){if(t){if(\"function\"!=typeof t.appendChild)throw\"Container should be a single DOM node\";this._options.type===x?this._canvas&&t.appendChild(this._canvas):this._svg&&t.appendChild(this._svg),this._container=t}},t.prototype.applyExtension=function(t){if(!t)throw\"Extension function should be defined.\";this._extension=t,this.update()},t.prototype.deleteExtension=function(){this._extension=void 0,this.update()},t.prototype.getRawData=function(t){return void 0===t&&(t=\"png\"),z(this,void 0,void 0,(function(){var e,r,n;return B(this,(function(o){switch(o.label){case 0:if(!this._qr)throw\"QR code is empty\";return[4,this._getElement(t)];case 1:return(e=o.sent())?\"svg\"===t.toLowerCase()?(r=new XMLSerializer,n=r.serializeToString(e),[2,new Blob(['<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n'+n],{type:\"image/svg+xml\"})]):[2,new Promise((function(r){return e.toBlob(r,\"image/\"+t,1)}))]:[2,null]}}))}))},t.prototype.download=function(t){return z(this,void 0,void 0,(function(){var e,r,n,o,i;return B(this,(function(a){switch(a.label){case 0:if(!this._qr)throw\"QR code is empty\";return e=\"png\",r=\"qr\",\"string\"==typeof t?(e=t,console.warn(\"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\")):\"object\"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getElement(e)];case 1:return(n=a.sent())?(\"svg\"===e.toLowerCase()?(o=new XMLSerializer,i='<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n'+(i=o.serializeToString(n)),s(\"data:image/svg+xml;charset=utf-8,\"+encodeURIComponent(i),r+\".svg\")):s(n.toDataURL(\"image/\"+e),r+\".\"+e),[2]):[2]}}))}))},t}()}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(676)})().default}));\n//# sourceMappingURL=qr-code-styling.js.map","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport QRCodeStylingOptions from './qr-code-styling-options';\nimport QRCodeStyling from 'qr-code-styling';\n\nconst placeholderImage = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8PhMAAo0BkpQxA1sAAAAASUVORK5CYII=\";\n\n// <QrCode> is a class component to allow tests to access the `qrCode` variable via a ref\n// to the instance which is not possible with functional components\nclass QrCode extends React.PureComponent {\n  constructor(props) {\n    super(props);\n\n    const { width, height } = props;\n    this.qrCodeRef = React.createRef();\n    this.qrCode = new QRCodeStyling(\n      QRCodeStylingOptions(props.url, window.urls.logo, { width, height })\n    );\n  }\n\n  componentDidMount() {\n    const blobReader = new FileReader();\n    const convertPNGToDataURL = blob => {\n      blobReader.readAsDataURL(blob);\n    }; // readAsDataURL will call onload when complete\n    const setImgSrcToDataURL = () => {\n      if (this.qrCodeRef.current) {\n        this.qrCodeRef.current.src = blobReader.result;\n      }\n    };\n    const raiseError = reason => {\n      throw `Failed to extract PNG: ${reason}`;\n    };\n\n    blobReader.onload = setImgSrcToDataURL; // when complete, set the reference `img` element to display the result\n    this.qrCode.getRawData('png').then(convertPNGToDataURL, raiseError);\n    this.qrCode.append(this.qrCodeRef.current);\n  }\n\n  render() {\n    const { url, width, height } = this.props;\n\n    return (\n      <img\n        className=\"mt-2 image-loader__qr-code\"\n        ref={this.qrCodeRef}\n        alt=\"QR code: open a page to upload photos from your phone\"\n        data-test-id=\"mobile-upload-qr-code\"\n        src={placeholderImage}\n        width={width}\n        height={height}\n        data-url={url}\n      />\n    );\n  }\n}\n\nQrCode.propTypes = {\n  url: PropTypes.string.isRequired,\n  width: PropTypes.number,\n  height: PropTypes.number,\n}\n\nQrCode.defaultProps = {\n  width: 250,\n  height: 250,\n}\n\nexport default QrCode;\n","import React from 'react';\n\nexport default function Spinner() {\n  return (\n    <div\n      data-test-id=\"image-loader__qr-code-spinner\"\n      className=\"spinner-border image-loader__qr-code-spinner\"\n      role=\"status\"></div>\n  );\n}\n","import React from 'react';\nimport Spinner from './spinner';\n\nexport default function QrCodeUploading({\n  fileCount,\n  handleUploadingQrCodeButton,\n}) {\n  return (\n    <>\n      <h3 className=\"title service-title font-weight-bold mt-5\">\n        {fileCount} photos are being uploaded from your phone\n      </h3>\n      <small className=\"d-block image-loader__qr-code-instructions\">\n        Please wait while the photos are being transferred\n      </small>\n      <small className=\"d-block image-loader__qr-code-instructions\">\n        This window will close automatically once the upload is complete\n      </small>\n      <small className=\"d-block image-loader__qr-code-instructions mb-4\">\n        <button\n          className=\"btn btn-link btn-sm\"\n          aria-label=\"Display QR code\"\n          role=\"button\"\n          onClick={handleUploadingQrCodeButton}>\n          Display Qr code\n        </button>\n      </small>\n      <Spinner />\n    </>\n  );\n}\n","import React from 'react';\nimport pluralize from '../../_utils/tools/pluralize';\n\nexport default function UploadFailureMessage({ failedUploadCount }) {\n  return (\n    <div\n      data-test-id=\"upload-failure-message\"\n      className=\"alert alert-danger p-2 w-50 mx-auto mt-2\"\n      role=\"alert\">\n      <i className=\"fas fa-exclamation-circle fa-lg mr-2 text-danger\" />\n      {failedUploadCount} {pluralize('photo', failedUploadCount)} failed to\n      upload\n    </div>\n  );\n}\n","import { usePrismItemStore } from 'stores/usePrismItemStore';\n\n\nfunction buildMobileUploadURL() {\n  const { qrLinkedMobileUploader } = window;\n  const prismItem = usePrismItemStore.getState().prismItem;\n\n  const uploaderConfigPath =\n    qrLinkedMobileUploader?.desktopUploaderConfigPath || '';\n\n  if (prismItem) {\n    return `${uploaderConfigPath}?prism_id=${prismItem.id}&sec=${prismItem.sec}`;\n  }\n\n  return uploaderConfigPath;\n}\n\nexport async function fetchDesktopUploaderConfig() {\n  try {\n    const response = await fetch(buildMobileUploadURL());\n\n    if (response.ok) {\n      return await response.json();\n    }\n\n    return {\n      error: 'Service Unavailable, please refresh the page and try again.',\n    };\n  } catch (error) {\n    return {\n      error: error,\n    };\n  }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport UploadAnalytics from './upload-analytics';\n\nimport { builderDispatch, WebUI } from '../_utils/ui';\nimport screenAndStyle from '../_utils/screen-and-style';\nimport { PusherConnection } from '../_mobile-uploader/pusher-connection';\nimport QrCode from './mobile-import/qr-code';\nimport QrCodeUploading from './mobile-import/qr-uploading';\nimport UploadFailureMessage from './mobile-import/upload-failure-message';\nimport Spinner from './mobile-import/spinner';\nimport { fetchDesktopUploaderConfig } from './mobile-import/desktop-uploader-config';\nimport { StatusBox } from '../_mobile-uploader/status-box';\nimport { defaultNewAlbumTitle } from './default-new-album-title';\nimport AnalyticsHandler from '../_libs/analytics/checkout-google-analytics';\n\nclass MyMobileImport extends React.Component {\n  static isActive() {\n    const { qrLinkedMobileUploader } = window;\n\n    return (\n      !!qrLinkedMobileUploader?.enabled &&\n      !screenAndStyle.isBootstrapXS() &&\n      !screenAndStyle.isBootstrapSM()\n    );\n  }\n\n  constructor() {\n    super();\n    const { App } = window;\n\n    this.state = {\n      loggedIn: App && App.order.logged_in(),\n      loaderServiceWasDisplayed: false,\n      imageUploading: false,\n      loading: true,\n      fileCount: 0,\n      failedUploadCount: 0,\n    };\n    this.files = this.files || [];\n  }\n\n  filesSelected() {\n    return [];\n  }\n\n  clear() {}\n\n  clearUploaded() {}\n\n  restart() {}\n\n  pause() {}\n\n  totalNumberOfFilesSelected() {\n    return 0;\n  }\n\n  performUpload() {}\n\n  componentDidMount() {\n    this.builderDispatchToken = builderDispatch.register(async payload => {\n      switch (payload.type) {\n        case WebUI.LOGIN:\n          const updatedChannelConfig = await fetchDesktopUploaderConfig();\n\n          this.setState({\n            loggedIn: true,\n            ...updatedChannelConfig,\n          });\n          break;\n\n        case WebUI.PHOTO_SERVICE_SELECTED:\n          if (payload.service === 'mobile') {\n            this.initialiseQrCodeImage();\n          }\n          break;\n\n        case WebUI.UPLOAD_PROGRESS:\n          this.setState(prevState => ({\n            prevState: (prevState.fileCount -= 1),\n          }));\n          break;\n\n        case WebUI.UPLOAD_DONE:\n          this.setState({ imageUploading: false });\n          !this.state.failedUploadCount && $('.image-loader').modal('hide');\n          break;\n      }\n    });\n\n    if (this.props.isActive) {\n      this.initialiseQrCodeImage();\n    }\n  }\n\n  componentWillUnmount() {\n    builderDispatch.unregister(this.builderDispatchToken);\n  }\n\n  shouldComponentUpdate(nextState) {\n    const {\n      fileCount,\n      loaderServiceWasDisplayed,\n      failedUploadCount,\n    } = this.state;\n    return (\n      nextState.fileCount !== fileCount ||\n      nextState.loaderServiceWasDisplayed !== loaderServiceWasDisplayed ||\n      nextState.failedUploadCount !== failedUploadCount\n    );\n  }\n\n  async initialiseQrCodeImage() {\n    if (!this.state.loaderServiceWasDisplayed) {\n      const channelConfig = await fetchDesktopUploaderConfig();\n\n      this.setState({\n        loaderServiceWasDisplayed: true,\n        loading: false,\n        ...channelConfig,\n      }); // Only initiate Pusher connection when tab/service is selected\n    }\n  }\n\n  sendAnalytics(eventCategory) {\n    const eventLabel = UploadAnalytics.eventTypes(\n      this.files.map(f => f.uploadAnalytics)\n    );\n\n    const payload = {\n      type: WebUI.Analytics.SEND,\n      eventCategory: eventCategory,\n      eventAction: 'mobile-device',\n      eventLabel: eventLabel,\n      eventValue: 0,\n    };\n\n    AnalyticsHandler.handleAnalyticsEvent(payload);\n  }\n\n  handlePusherEvent = event => {\n    const { data: images = [] } = event;\n    const numberOfFiles = images.length;\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_BEGUN,\n      number_of_files: numberOfFiles,\n      album: defaultNewAlbumTitle(), // Allow Prism Builder to use default album title after image upload\n    });\n\n    images.forEach(image => {\n      builderDispatch.dispatch({\n        type: WebUI.UPLOAD_PROGRESS,\n        data: image,\n        number_of_files: numberOfFiles,\n      });\n    });\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_DONE,\n      number_of_errors: 0,\n      number_of_files: numberOfFiles,\n    });\n  };\n\n  handleIncomingUploads = ({ fileCount }) => {\n    this.setState({\n      imageUploading: true,\n      fileCount: fileCount,\n      failedUploadCount: 0,\n    });\n  };\n\n  handleUploadFail = ({ failedUploadCount }) => {\n    this.setState({\n      imageUploading: false,\n      failedUploadCount: failedUploadCount,\n    });\n  };\n\n  handleUploadingQrCodeButton = () => {\n    this.setState({ imageUploading: false });\n  };\n\n  render() {\n    const {\n      loaderServiceWasDisplayed,\n      imageUploading,\n      fileCount,\n      failedUploadCount,\n      mobileUploaderUrl,\n      config,\n      loading,\n      error,\n    } = this.state;\n\n    if (loading) {\n      return (\n        <MobileImportWrapper {...this.props}>\n          <Spinner />\n        </MobileImportWrapper>\n      );\n    }\n\n    if (error) {\n      return (\n        <MobileImportWrapper {...this.props}>\n          <StatusBox type=\"danger\" className=\"w-50 mx-auto mt-2\">\n            <i className=\"fas fa-exclamation-circle fa-lg mr-2 text-danger\" />\n            {error}\n          </StatusBox>\n        </MobileImportWrapper>\n      );\n    }\n\n    return (\n      <MobileImportWrapper {...this.props}>\n        {loaderServiceWasDisplayed && (\n          <PusherConnection\n            config={config}\n            eventHandlers={{\n              'client-image-upload': this.handlePusherEvent,\n              'client-image-uploading': this.handleIncomingUploads,\n              'client-image-upload-fail': this.handleUploadFail,\n            }}\n            statusClassName=\"w-50 mx-auto mt-2\">\n            {imageUploading ? (\n              <QrCodeUploading\n                fileCount={fileCount}\n                handleUploadingQrCodeButton={this.handleUploadingQrCodeButton}\n              />\n            ) : (\n              <div className=\"h-100 image-loader__qr-code-wrapper\">\n                <div className=\"image-loader__qr-code-instructions\">\n                  <i className=\"mx-auto medium fas fa-mobile-alt\" />\n                  <h3 className=\"title service-title font-weight-bold\">\n                    Uploading photos from your phone is as simple as 1-2-3\n                  </h3>\n                  <small>\n                    <ol>\n                      <li>Scan the QR code by using your phone camera</li>\n                      <li>Select the photos you want to use</li>\n                      <li>Upload your photos</li>\n                    </ol>\n                  </small>\n                </div>\n                <div>\n                  <QrCode url={mobileUploaderUrl} />\n                </div>\n              </div>\n            )}\n\n            {!!failedUploadCount && (\n              <UploadFailureMessage failedUploadCount={failedUploadCount} />\n            )}\n          </PusherConnection>\n        )}\n      </MobileImportWrapper>\n    );\n  }\n}\n\nexport const MobileImportWrapper = ({\n  service,\n  height,\n  isActive,\n  children,\n}) => {\n  return (\n    <div\n      data-test-id={`image-loader-service-${service}`}\n      id={`image-loader-service-${service}`}\n      style={{ height: height }}\n      className={classNames('text-center image-loader-service', service, {\n        'd-none': !isActive,\n      })}\n      tabIndex=\"0\">\n      <div className=\"d-flex h-100 flex-column justify-content-center p-4 overflow-auto\">\n        {children}\n      </div>\n    </div>\n  );\n};\n\nMyMobileImport.propTypes = {\n  service: PropTypes.string.isRequired,\n  isActive: PropTypes.bool.isRequired,\n  height: PropTypes.number.isRequired,\n};\n\nexport default MyMobileImport;\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  AbortException: () => (/* reexport */ AbortException),\n  AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n  AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n  AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n  AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n  AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n  AnnotationMode: () => (/* reexport */ AnnotationMode),\n  AnnotationType: () => (/* reexport */ AnnotationType),\n  ColorPicker: () => (/* reexport */ ColorPicker),\n  DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n  DrawLayer: () => (/* reexport */ DrawLayer),\n  FeatureTest: () => (/* reexport */ util_FeatureTest),\n  GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n  ImageKind: () => (/* reexport */ util_ImageKind),\n  InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n  MathClamp: () => (/* reexport */ MathClamp),\n  OPS: () => (/* reexport */ OPS),\n  OutputScale: () => (/* reexport */ OutputScale),\n  PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n  PDFDateString: () => (/* reexport */ PDFDateString),\n  PDFWorker: () => (/* reexport */ PDFWorker),\n  PasswordResponses: () => (/* reexport */ PasswordResponses),\n  PermissionFlag: () => (/* reexport */ PermissionFlag),\n  PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n  RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n  ResponseException: () => (/* reexport */ ResponseException),\n  SignatureExtractor: () => (/* reexport */ SignatureExtractor),\n  SupportedImageMimeTypes: () => (/* reexport */ SupportedImageMimeTypes),\n  TextLayer: () => (/* reexport */ TextLayer),\n  TouchManager: () => (/* reexport */ TouchManager),\n  Util: () => (/* reexport */ Util),\n  VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n  XfaLayer: () => (/* reexport */ XfaLayer),\n  build: () => (/* reexport */ build),\n  createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n  fetchData: () => (/* reexport */ fetchData),\n  getDocument: () => (/* reexport */ getDocument),\n  getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n  getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n  getUuid: () => (/* reexport */ getUuid),\n  getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n  isDataScheme: () => (/* reexport */ isDataScheme),\n  isPdfFile: () => (/* reexport */ isPdfFile),\n  isValidExplicitDest: () => (/* reexport */ isValidExplicitDest),\n  noContextMenu: () => (/* reexport */ noContextMenu),\n  normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n  setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n  shadow: () => (/* reexport */ shadow),\n  stopEvent: () => (/* reexport */ stopEvent),\n  version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  IS_EDITING: 0x80,\n  OPLIST: 0x100\n};\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15,\n  SIGNATURE: 101\n};\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n  HIGHLIGHT_COLOR: 31,\n  HIGHLIGHT_DEFAULT_COLOR: 32,\n  HIGHLIGHT_THICKNESS: 33,\n  HIGHLIGHT_FREE: 34,\n  HIGHLIGHT_SHOW_ALL: 35,\n  DRAW_STEP: 41\n};\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\"\n};\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\"\n};\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nconst OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n  setStrokeTransparent: 92,\n  setFillTransparent: 93\n};\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\nfunction getVerbosityLevel() {\n  return verbosity;\n}\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  if (options && typeof url === \"string\") {\n    if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n      const dots = url.match(/\\./g);\n      if (dots?.length >= 2) {\n        url = `http://${url}`;\n      }\n    }\n    if (options.tryConvertEncoding) {\n      try {\n        url = stringToUTF8String(url);\n      } catch {}\n    }\n  }\n  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n  function BaseException(message, name) {\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n  return BaseException;\n}();\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\nclass ResponseException extends BaseException {\n  constructor(msg, status, missing) {\n    super(msg, \"ResponseException\");\n    this.status = status;\n    this.missing = missing;\n  }\n}\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nfunction isEvalSupported() {\n  try {\n    new Function(\"\");\n    return true;\n  } catch {\n    return false;\n  }\n}\nclass util_FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n  static get isOffscreenCanvasSupported() {\n    return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n  }\n  static get isImageDecoderSupported() {\n    return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n  }\n  static get platform() {\n    if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\" && typeof navigator?.userAgent === \"string\") {\n      const {\n        platform,\n        userAgent\n      } = navigator;\n      return shadow(this, \"platform\", {\n        isAndroid: userAgent.includes(\"Android\"),\n        isLinux: platform.includes(\"Linux\"),\n        isMac: platform.includes(\"Mac\"),\n        isWindows: platform.includes(\"Win\"),\n        isFirefox: userAgent.includes(\"Firefox\")\n      });\n    }\n    return shadow(this, \"platform\", {\n      isAndroid: false,\n      isLinux: false,\n      isMac: false,\n      isWindows: false,\n      isFirefox: false\n    });\n  }\n  static get isCSSRoundSupported() {\n    return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n  }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[2] *= transform[0];\n      if (transform[3] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[1];\n      minMax[1] = temp;\n      temp = minMax[2];\n      minMax[2] = minMax[3];\n      minMax[3] = temp;\n      if (transform[1] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[1];\n      minMax[3] *= transform[1];\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[2] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[5];\n    minMax[2] += transform[4];\n    minMax[3] += transform[5];\n  }\n  static transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  }\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = this.applyTransform(r, m);\n    const p2 = this.applyTransform(r.slice(2, 4), m);\n    const p3 = this.applyTransform([r[0], r[3]], m);\n    const p4 = this.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  }\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  }\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n  static normalizeRect(rect) {\n    const r = rect.slice(0);\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n    const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n    const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n    if (yLow > yHigh) {\n      return null;\n    }\n    return [xLow, yLow, xHigh, yHigh];\n  }\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n    if (t <= 0 || t >= 1) {\n      return;\n    }\n    const mt = 1 - t;\n    const tt = t * t;\n    const ttt = tt * t;\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n    if (Math.abs(a) < 1e-12) {\n      if (Math.abs(b) >= 1e-12) {\n        this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n      }\n      return;\n    }\n    const delta = b ** 2 - 4 * c * a;\n    if (delta < 0) {\n      return;\n    }\n    const sqrtDelta = Math.sqrt(delta);\n    const a2 = 2 * a;\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n  }\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], x0, x3);\n      minMax[1] = Math.min(minMax[1], y0, y3);\n      minMax[2] = Math.max(minMax[2], x0, x3);\n      minMax[3] = Math.max(minMax[3], y0, y3);\n    } else {\n      minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n    }\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n    return minMax;\n  }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (!decoded.includes(\"\\x1b\")) {\n          return decoded;\n        }\n        return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (charCode === 0x1b) {\n      while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n      continue;\n    }\n    const code = PDFStringTranslateTable[charCode];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getModificationDate(date = new Date()) {\n  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n  return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n  if (typeof crypto.randomUUID === \"function\") {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  crypto.getRandomValues(buf);\n  return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n  if (!Array.isArray(dest) || dest.length < 2) {\n    return false;\n  }\n  const [page, zoom, ...args] = dest;\n  if (!validRef(page) && !Number.isInteger(page)) {\n    return false;\n  }\n  if (!validName(zoom)) {\n    return false;\n  }\n  const argsLen = args.length;\n  let allowNull = true;\n  switch (zoom.name) {\n    case \"XYZ\":\n      if (argsLen < 2 || argsLen > 3) {\n        return false;\n      }\n      break;\n    case \"Fit\":\n    case \"FitB\":\n      return argsLen === 0;\n    case \"FitH\":\n    case \"FitBH\":\n    case \"FitV\":\n    case \"FitBV\":\n      if (argsLen > 1) {\n        return false;\n      }\n      break;\n    case \"FitR\":\n      if (argsLen !== 4) {\n        return false;\n      }\n      allowNull = false;\n      break;\n    default:\n      return false;\n  }\n  for (const arg of args) {\n    if (typeof arg === \"number\" || allowNull && arg === null) {\n      continue;\n    }\n    return false;\n  }\n  return true;\n}\nfunction MathClamp(v, min, max) {\n  return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n  if (Uint8Array.prototype.toHex) {\n    return arr.toHex();\n  }\n  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n  if (Uint8Array.prototype.toBase64) {\n    return arr.toBase64();\n  }\n  return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n  if (Uint8Array.fromBase64) {\n    return Uint8Array.fromBase64(str);\n  }\n  return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n  Promise.try = function (fn, ...args) {\n    return new Promise(resolve => {\n      resolve(fn(...args));\n    });\n  };\n}\n\n;// ./src/display/display_utils.js\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n  static CSS = 96.0;\n  static PDF = 72.0;\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n  if (isValidFetchUrl(url, document.baseURI)) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    switch (type) {\n      case \"arraybuffer\":\n        return response.arrayBuffer();\n      case \"blob\":\n        return response.blob();\n      case \"json\":\n        return response.json();\n    }\n    return response.text();\n  }\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, true);\n    request.responseType = type;\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        switch (type) {\n          case \"arraybuffer\":\n          case \"blob\":\n          case \"json\":\n            resolve(request.response);\n            return;\n        }\n        resolve(request.responseText);\n        return;\n      }\n      reject(new Error(request.statusText));\n    };\n    request.send(null);\n  });\n}\nclass PageViewport {\n  constructor({\n    viewBox,\n    userUnit,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  }) {\n    this.viewBox = viewBox;\n    this.userUnit = userUnit;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    scale *= userUnit;\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    rotation %= 360;\n    if (rotation < 0) {\n      rotation += 360;\n    }\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n      default:\n        throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n    }\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = (viewBox[3] - viewBox[1]) * scale;\n      height = (viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = (viewBox[2] - viewBox[0]) * scale;\n      height = (viewBox[3] - viewBox[1]) * scale;\n    }\n    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n    this.width = width;\n    this.height = height;\n  }\n  get rawDims() {\n    const dims = this.viewBox;\n    return shadow(this, \"rawDims\", {\n      pageWidth: dims[2] - dims[0],\n      pageHeight: dims[3] - dims[1],\n      pageX: dims[0],\n      pageY: dims[1]\n    });\n  }\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\n  }\n  convertToViewportRectangle(rect) {\n    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\n  }\n}\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n  [url] = url.split(/[#?]/, 1);\n  return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n  if (isDataScheme(url)) {\n    warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n  const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes(\"%\")) {\n      try {\n        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n      } catch {}\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n  started = Object.create(null);\n  times = [];\n  time(name) {\n    if (name in this.started) {\n      warn(`Timer is already running for ${name}`);\n    }\n    this.started[name] = Date.now();\n  }\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      warn(`Timer has not been started for ${name}`);\n    }\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now()\n    });\n    delete this.started[name];\n  }\n  toString() {\n    const outBuf = [];\n    let longest = 0;\n    for (const {\n      name\n    } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const {\n      name,\n      start,\n      end\n    } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n  const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\nfunction stopEvent(e) {\n  e.preventDefault();\n  e.stopPropagation();\n}\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n  static #regex;\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n    this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n    const matches = this.#regex.exec(input);\n    if (!matches) {\n      return null;\n    }\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\nfunction getXfaPageViewport(xfaPage, {\n  scale = 1,\n  rotation = 0\n}) {\n  const {\n    width,\n    height\n  } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n  return new PageViewport({\n    viewBox,\n    userUnit: 1,\n    scale,\n    rotation\n  });\n}\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n  }\n  if (color.startsWith(\"rgb(\")) {\n    return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n  }\n  if (color.startsWith(\"rgba(\")) {\n    return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n  }\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n  const span = document.createElement(\"span\");\n  span.style.visibility = \"hidden\";\n  document.body.append(span);\n  for (const name of colors.keys()) {\n    span.style.color = name;\n    const computedColor = window.getComputedStyle(span).color;\n    colors.set(name, getRGB(computedColor));\n  }\n  span.remove();\n}\nfunction getCurrentTransform(ctx) {\n  const {\n    a,\n    b,\n    c,\n    d,\n    e,\n    f\n  } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n  const {\n    a,\n    b,\n    c,\n    d,\n    e,\n    f\n  } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n  if (viewport instanceof PageViewport) {\n    const {\n      pageWidth,\n      pageHeight\n    } = viewport.rawDims;\n    const {\n      style\n    } = div;\n    const useRound = util_FeatureTest.isCSSRoundSupported;\n    const w = `var(--total-scale-factor) * ${pageWidth}px`,\n      h = `var(--total-scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n      heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n    if (!mustFlip || viewport.rotation % 180 === 0) {\n      style.width = widthStr;\n      style.height = heightStr;\n    } else {\n      style.width = heightStr;\n      style.height = widthStr;\n    }\n  }\n  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\nclass OutputScale {\n  constructor() {\n    const {\n      pixelRatio\n    } = OutputScale;\n    this.sx = pixelRatio;\n    this.sy = pixelRatio;\n  }\n  get scaled() {\n    return this.sx !== 1 || this.sy !== 1;\n  }\n  get symmetric() {\n    return this.sx === this.sy;\n  }\n  limitCanvas(width, height, maxPixels, maxDim) {\n    let maxAreaScale = Infinity,\n      maxWidthScale = Infinity,\n      maxHeightScale = Infinity;\n    if (maxPixels > 0) {\n      maxAreaScale = Math.sqrt(maxPixels / (width * height));\n    }\n    if (maxDim !== -1) {\n      maxWidthScale = maxDim / width;\n      maxHeightScale = maxDim / height;\n    }\n    const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n    if (this.sx > maxScale || this.sy > maxScale) {\n      this.sx = maxScale;\n      this.sy = maxScale;\n      return true;\n    }\n    return false;\n  }\n  static get pixelRatio() {\n    return globalThis.devicePixelRatio || 1;\n  }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n  #toolbar = null;\n  #colorPicker = null;\n  #editor;\n  #buttons = null;\n  #altText = null;\n  #signatureDescriptionButton = null;\n  static #l10nRemove = null;\n  constructor(editor) {\n    this.#editor = editor;\n    EditorToolbar.#l10nRemove ||= Object.freeze({\n      freetext: \"pdfjs-editor-remove-freetext-button\",\n      highlight: \"pdfjs-editor-remove-highlight-button\",\n      ink: \"pdfjs-editor-remove-ink-button\",\n      stamp: \"pdfjs-editor-remove-stamp-button\",\n      signature: \"pdfjs-editor-remove-signature-button\"\n    });\n  }\n  render() {\n    const editToolbar = this.#toolbar = document.createElement(\"div\");\n    editToolbar.classList.add(\"editToolbar\", \"hidden\");\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n    const signal = this.#editor._uiManager._signal;\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n      signal\n    });\n    const buttons = this.#buttons = document.createElement(\"div\");\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n    const position = this.#editor.toolbarPosition;\n    if (position) {\n      const {\n        style\n      } = editToolbar;\n      const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n      style.insetInlineEnd = `${100 * x}%`;\n      style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n    }\n    this.#addDeleteButton();\n    return editToolbar;\n  }\n  get div() {\n    return this.#toolbar;\n  }\n  static #pointerDown(e) {\n    e.stopPropagation();\n  }\n  #focusIn(e) {\n    this.#editor._focusEventsAllowed = false;\n    stopEvent(e);\n  }\n  #focusOut(e) {\n    this.#editor._focusEventsAllowed = true;\n    stopEvent(e);\n  }\n  #addListenersToElement(element) {\n    const signal = this.#editor._uiManager._signal;\n    element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n      capture: true,\n      signal\n    });\n    element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n      capture: true,\n      signal\n    });\n    element.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n  }\n  hide() {\n    this.#toolbar.classList.add(\"hidden\");\n    this.#colorPicker?.hideDropdown();\n  }\n  show() {\n    this.#toolbar.classList.remove(\"hidden\");\n    this.#altText?.shown();\n  }\n  #addDeleteButton() {\n    const {\n      editorType,\n      _uiManager\n    } = this.#editor;\n    const button = document.createElement(\"button\");\n    button.className = \"delete\";\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n    this.#addListenersToElement(button);\n    button.addEventListener(\"click\", e => {\n      _uiManager.delete();\n    }, {\n      signal: _uiManager._signal\n    });\n    this.#buttons.append(button);\n  }\n  get #divider() {\n    const divider = document.createElement(\"div\");\n    divider.className = \"divider\";\n    return divider;\n  }\n  async addAltText(altText) {\n    const button = await altText.render();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n    this.#altText = altText;\n  }\n  addColorPicker(colorPicker) {\n    this.#colorPicker = colorPicker;\n    const button = colorPicker.renderButton();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n  }\n  async addEditSignatureButton(signatureManager) {\n    const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n  }\n  updateEditSignatureButton(description) {\n    if (this.#signatureDescriptionButton) {\n      this.#signatureDescriptionButton.title = description;\n    }\n  }\n  remove() {\n    this.#toolbar.remove();\n    this.#colorPicker?.destroy();\n    this.#colorPicker = null;\n  }\n}\nclass HighlightToolbar {\n  #buttons = null;\n  #toolbar = null;\n  #uiManager;\n  constructor(uiManager) {\n    this.#uiManager = uiManager;\n  }\n  #render() {\n    const editToolbar = this.#toolbar = document.createElement(\"div\");\n    editToolbar.className = \"editToolbar\";\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n      signal: this.#uiManager._signal\n    });\n    const buttons = this.#buttons = document.createElement(\"div\");\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n    this.#addHighlightButton();\n    return editToolbar;\n  }\n  #getLastPoint(boxes, isLTR) {\n    let lastY = 0;\n    let lastX = 0;\n    for (const box of boxes) {\n      const y = box.y + box.height;\n      if (y < lastY) {\n        continue;\n      }\n      const x = box.x + (isLTR ? box.width : 0);\n      if (y > lastY) {\n        lastX = x;\n        lastY = y;\n        continue;\n      }\n      if (isLTR) {\n        if (x > lastX) {\n          lastX = x;\n        }\n      } else if (x < lastX) {\n        lastX = x;\n      }\n    }\n    return [isLTR ? 1 - lastX : lastX, lastY];\n  }\n  show(parent, boxes, isLTR) {\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\n    const {\n      style\n    } = this.#toolbar ||= this.#render();\n    parent.append(this.#toolbar);\n    style.insetInlineEnd = `${100 * x}%`;\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n  }\n  hide() {\n    this.#toolbar.remove();\n  }\n  #addHighlightButton() {\n    const button = document.createElement(\"button\");\n    button.className = \"highlightButton\";\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n    const span = document.createElement(\"span\");\n    button.append(span);\n    span.className = \"visuallyHidden\";\n    span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    button.addEventListener(\"click\", () => {\n      this.#uiManager.highlightSelection(\"floating_button\");\n    }, {\n      signal\n    });\n    this.#buttons.append(button);\n  }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\nclass IdManager {\n  #id = 0;\n  get id() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\nclass ImageManager {\n  #baseId = getUuid();\n  #id = 0;\n  #cache = null;\n  static get _isSVGFittingCanvas() {\n    const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n    const canvas = new OffscreenCanvas(1, 3);\n    const ctx = canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    });\n    const image = new Image();\n    image.src = svg;\n    const promise = image.decode().then(() => {\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n    });\n    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\n      return null;\n    }\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    try {\n      data ||= {\n        bitmap: null,\n        id: `image_${this.#baseId}_${this.#id++}`,\n        refCounter: 0,\n        isSvg: false\n      };\n      let image;\n      if (typeof rawData === \"string\") {\n        data.url = rawData;\n        image = await fetchData(rawData, \"blob\");\n      } else if (rawData instanceof File) {\n        image = data.file = rawData;\n      } else if (rawData instanceof Blob) {\n        image = rawData;\n      }\n      if (image.type === \"image/svg+xml\") {\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n        const fileReader = new FileReader();\n        const imageElement = new Image();\n        const imagePromise = new Promise((resolve, reject) => {\n          imageElement.onload = () => {\n            data.bitmap = imageElement;\n            data.isSvg = true;\n            resolve();\n          };\n          fileReader.onload = async () => {\n            const url = data.svgUrl = fileReader.result;\n            imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n          };\n          imageElement.onerror = fileReader.onerror = reject;\n        });\n        fileReader.readAsDataURL(image);\n        await imagePromise;\n      } else {\n        data.bitmap = await createImageBitmap(image);\n      }\n      data.refCounter = 1;\n    } catch (e) {\n      warn(e);\n      data = null;\n    }\n    this.#cache.set(key, data);\n    if (data) {\n      this.#cache.set(data.id, data);\n    }\n    return data;\n  }\n  async getFromFile(file) {\n    const {\n      lastModified,\n      name,\n      size,\n      type\n    } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\n  async getFromBlob(id, blobPromise) {\n    const blob = await blobPromise;\n    return this.#get(id, blob);\n  }\n  async getFromId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return null;\n    }\n    if (data.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    if (data.blobPromise) {\n      const {\n        blobPromise\n      } = data;\n      delete data.blobPromise;\n      return this.getFromBlob(data.id, blobPromise);\n    }\n    return this.getFromUrl(data.url);\n  }\n  getFromCanvas(id, canvas) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(id);\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n    const ctx = offscreen.getContext(\"2d\");\n    ctx.drawImage(canvas, 0, 0);\n    data = {\n      bitmap: offscreen.transferToImageBitmap(),\n      id: `image_${this.#baseId}_${this.#id++}`,\n      refCounter: 1,\n      isSvg: false\n    };\n    this.#cache.set(id, data);\n    this.#cache.set(data.id, data);\n    return data;\n  }\n  getSvgUrl(id) {\n    const data = this.#cache.get(id);\n    if (!data?.isSvg) {\n      return null;\n    }\n    return data.svgUrl;\n  }\n  deleteId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return;\n    }\n    data.refCounter -= 1;\n    if (data.refCounter !== 0) {\n      return;\n    }\n    const {\n      bitmap\n    } = data;\n    if (!data.url && !data.file) {\n      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n      const ctx = canvas.getContext(\"bitmaprenderer\");\n      ctx.transferFromImageBitmap(bitmap);\n      data.blobPromise = canvas.convertToBlob();\n    }\n    bitmap.close?.();\n    data.bitmap = null;\n  }\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\nclass CommandManager {\n  #commands = [];\n  #locked = false;\n  #maxSize;\n  #position = -1;\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n  add({\n    cmd,\n    undo,\n    post,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n    if (this.#locked) {\n      return;\n    }\n    const save = {\n      cmd,\n      undo,\n      post,\n      type\n    };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\n    const next = this.#position + 1;\n    if (next === this.#maxSize) {\n      this.#commands.splice(0, 1);\n    } else {\n      this.#position = next;\n      if (next < this.#commands.length) {\n        this.#commands.splice(next);\n      }\n    }\n    this.#commands.push(save);\n  }\n  undo() {\n    if (this.#position === -1) {\n      return;\n    }\n    this.#locked = true;\n    const {\n      undo,\n      post\n    } = this.#commands[this.#position];\n    undo();\n    post?.();\n    this.#locked = false;\n    this.#position -= 1;\n  }\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n      this.#locked = true;\n      const {\n        cmd,\n        post\n      } = this.#commands[this.#position];\n      cmd();\n      post?.();\n      this.#locked = false;\n    }\n  }\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n  cleanType(type) {\n    if (this.#position === -1) {\n      return;\n    }\n    for (let i = this.#position; i >= 0; i--) {\n      if (this.#commands[i].type !== type) {\n        this.#commands.splice(i + 1, this.#position - i);\n        this.#position = i;\n        return;\n      }\n    }\n    this.#commands.length = 0;\n    this.#position = -1;\n  }\n  destroy() {\n    this.#commands = null;\n  }\n}\nclass KeyboardManager {\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    for (const [keys, callback, options = {}] of callbacks) {\n      for (const key of keys) {\n        const isMacKey = key.startsWith(\"mac+\");\n        if (isMac && isMacKey) {\n          this.callbacks.set(key.slice(4), {\n            callback,\n            options\n          });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, {\n            callback,\n            options\n          });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n  #serialize(event) {\n    if (event.altKey) {\n      this.buffer.push(\"alt\");\n    }\n    if (event.ctrlKey) {\n      this.buffer.push(\"ctrl\");\n    }\n    if (event.metaKey) {\n      this.buffer.push(\"meta\");\n    }\n    if (event.shiftKey) {\n      this.buffer.push(\"shift\");\n    }\n    this.buffer.push(event.key);\n    const str = this.buffer.join(\"+\");\n    this.buffer.length = 0;\n    return str;\n  }\n  exec(self, event) {\n    if (!this.allKeys.has(event.key)) {\n      return;\n    }\n    const info = this.callbacks.get(this.#serialize(event));\n    if (!info) {\n      return;\n    }\n    const {\n      callback,\n      options: {\n        bubbles = false,\n        args = [],\n        checker = null\n      }\n    } = info;\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args, event)();\n    if (!bubbles) {\n      stopEvent(event);\n    }\n  }\n}\nclass ColorManager {\n  static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n  get _colors() {\n    const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\n    }\n    for (const [name, RGB] of this._colors) {\n      if (RGB.every((x, i) => x === rgb[i])) {\n        return ColorManager._colorsMapping.get(name);\n      }\n    }\n    return rgb;\n  }\n  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\nclass AnnotationEditorUIManager {\n  #abortController = new AbortController();\n  #activeEditor = null;\n  #allEditors = new Map();\n  #allLayers = new Map();\n  #altTextManager = null;\n  #annotationStorage = null;\n  #changedExistingAnnotations = null;\n  #commandManager = new CommandManager();\n  #copyPasteAC = null;\n  #currentDrawingSession = null;\n  #currentPageIndex = 0;\n  #deletedAnnotationsElementIds = new Set();\n  #draggingEditors = null;\n  #editorTypes = null;\n  #editorsToRescale = new Set();\n  _editorUndoBar = null;\n  #enableHighlightFloatingButton = false;\n  #enableUpdatedAddImage = false;\n  #enableNewAltTextWhenAddingImage = false;\n  #filterFactory = null;\n  #focusMainContainerTimeoutId = null;\n  #focusManagerAC = null;\n  #highlightColors = null;\n  #highlightWhenShiftUp = false;\n  #highlightToolbar = null;\n  #idManager = new IdManager();\n  #isEnabled = false;\n  #isWaiting = false;\n  #keyboardManagerAC = null;\n  #lastActiveElement = null;\n  #mainHighlightColorPicker = null;\n  #missingCanvases = null;\n  #mlManager = null;\n  #mode = AnnotationEditorType.NONE;\n  #selectedEditors = new Set();\n  #selectedTextNode = null;\n  #signatureManager = null;\n  #pageColors = null;\n  #showAllStates = null;\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n    hasSelectedText: false\n  };\n  #translation = [0, 0];\n  #translationTimeoutId = null;\n  #container = null;\n  #viewer = null;\n  #updateModeCapability = null;\n  static TRANSLATE_SMALL = 1;\n  static TRANSLATE_BIG = 10;\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n    const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n    const textInputChecker = (_self, {\n      target: el\n    }) => {\n      if (el instanceof HTMLInputElement) {\n        const {\n          type\n        } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n      checker: textInputChecker\n    }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n      checker: textInputChecker\n    }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n      checker: textInputChecker\n    }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n      checker: textInputChecker\n    }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n      checker: (self, {\n        target: el\n      }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n    }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n      checker: (self, {\n        target: el\n      }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n    }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n      args: [-small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n      args: [-big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n      args: [small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n      args: [big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n      args: [0, -small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n      args: [0, -big],\n      checker: arrowChecker\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n      args: [0, small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n      args: [0, big],\n      checker: arrowChecker\n    }]]));\n  }\n  constructor(container, viewer, altTextManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n    const signal = this._signal = this.#abortController.signal;\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#altTextManager = altTextManager;\n    this.#signatureManager = signatureManager;\n    this._eventBus = eventBus;\n    eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n      signal\n    });\n    eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n      signal\n    });\n    eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n      signal\n    });\n    this.#addSelectionListener();\n    this.#addDragAndDropListeners();\n    this.#addKeyboardManager();\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.#highlightColors = highlightColors || null;\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n    this.#enableUpdatedAddImage = enableUpdatedAddImage;\n    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n    this.#mlManager = mlManager || null;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0\n    };\n    this.isShiftKeyDown = false;\n    this._editorUndoBar = editorUndoBar || null;\n    this._supportsPinchToZoom = supportsPinchToZoom !== false;\n  }\n  destroy() {\n    this.#updateModeCapability?.resolve();\n    this.#updateModeCapability = null;\n    this.#abortController?.abort();\n    this.#abortController = null;\n    this._signal = null;\n    for (const layer of this.#allLayers.values()) {\n      layer.destroy();\n    }\n    this.#allLayers.clear();\n    this.#allEditors.clear();\n    this.#editorsToRescale.clear();\n    this.#missingCanvases?.clear();\n    this.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#commandManager.destroy();\n    this.#altTextManager?.destroy();\n    this.#signatureManager?.destroy();\n    this.#highlightToolbar?.hide();\n    this.#highlightToolbar = null;\n    this.#mainHighlightColorPicker?.destroy();\n    this.#mainHighlightColorPicker = null;\n    if (this.#focusMainContainerTimeoutId) {\n      clearTimeout(this.#focusMainContainerTimeoutId);\n      this.#focusMainContainerTimeoutId = null;\n    }\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n      this.#translationTimeoutId = null;\n    }\n    this._editorUndoBar?.destroy();\n  }\n  combinedSignal(ac) {\n    return AbortSignal.any([this._signal, ac.signal]);\n  }\n  get mlManager() {\n    return this.#mlManager;\n  }\n  get useNewAltTextFlow() {\n    return this.#enableUpdatedAddImage;\n  }\n  get useNewAltTextWhenAddingImage() {\n    return this.#enableNewAltTextWhenAddingImage;\n  }\n  get hcmFilter() {\n    return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n  }\n  get direction() {\n    return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n  }\n  get highlightColors() {\n    return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n  }\n  get highlightColorNames() {\n    return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n  }\n  setCurrentDrawingSession(layer) {\n    if (layer) {\n      this.unselectAll();\n      this.disableUserSelect(true);\n    } else {\n      this.disableUserSelect(false);\n    }\n    this.#currentDrawingSession = layer;\n  }\n  setMainHighlightColorPicker(colorPicker) {\n    this.#mainHighlightColorPicker = colorPicker;\n  }\n  editAltText(editor, firstTime = false) {\n    this.#altTextManager?.editAltText(this, editor, firstTime);\n  }\n  getSignature(editor) {\n    this.#signatureManager?.getSignature({\n      uiManager: this,\n      editor\n    });\n  }\n  get signatureManager() {\n    return this.#signatureManager;\n  }\n  switchToMode(mode, callback) {\n    this._eventBus.on(\"annotationeditormodechanged\", callback, {\n      once: true,\n      signal: this._signal\n    });\n    this._eventBus.dispatch(\"showannotationeditorui\", {\n      source: this,\n      mode\n    });\n  }\n  setPreference(name, value) {\n    this._eventBus.dispatch(\"setpreference\", {\n      source: this,\n      name,\n      value\n    });\n  }\n  onSetPreference({\n    name,\n    value\n  }) {\n    switch (name) {\n      case \"enableNewAltTextWhenAddingImage\":\n        this.#enableNewAltTextWhenAddingImage = value;\n        break;\n    }\n  }\n  onPageChanging({\n    pageNumber\n  }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n  focusMainContainer() {\n    this.#container.focus();\n  }\n  findParent(x, y) {\n    for (const layer of this.#allLayers.values()) {\n      const {\n        x: layerX,\n        y: layerY,\n        width,\n        height\n      } = layer.div.getBoundingClientRect();\n      if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n        return layer;\n      }\n    }\n    return null;\n  }\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n  onScaleChanging({\n    scale\n  }) {\n    this.commitOrRemove();\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n    for (const editor of this.#editorsToRescale) {\n      editor.onScaleChanging();\n    }\n    this.#currentDrawingSession?.onScaleChanging();\n  }\n  onRotationChanging({\n    pagesRotation\n  }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n  #getAnchorElementForSelection({\n    anchorNode\n  }) {\n    return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n  }\n  #getLayerForTextLayer(textLayer) {\n    const {\n      currentLayer\n    } = this;\n    if (currentLayer.hasTextLayer(textLayer)) {\n      return currentLayer;\n    }\n    for (const layer of this.#allLayers.values()) {\n      if (layer.hasTextLayer(textLayer)) {\n        return layer;\n      }\n    }\n    return null;\n  }\n  highlightSelection(methodOfCreation = \"\") {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const {\n      anchorNode,\n      anchorOffset,\n      focusNode,\n      focusOffset\n    } = selection;\n    const text = selection.toString();\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    selection.empty();\n    const layer = this.#getLayerForTextLayer(textLayer);\n    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n    const callback = () => {\n      layer?.createAndAddNewEditor({\n        x: 0,\n        y: 0\n      }, false, {\n        methodOfCreation,\n        boxes,\n        anchorNode,\n        anchorOffset,\n        focusNode,\n        focusOffset,\n        text\n      });\n      if (isNoneMode) {\n        this.showAllEditors(\"highlight\", true, true);\n      }\n    };\n    if (isNoneMode) {\n      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n      return;\n    }\n    callback();\n  }\n  #displayHighlightToolbar() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    this.#highlightToolbar ||= new HighlightToolbar(this);\n    this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n  }\n  addToAnnotationStorage(editor) {\n    if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n  #selectionChange() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      if (this.#selectedTextNode) {\n        this.#highlightToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false\n        });\n      }\n      return;\n    }\n    const {\n      anchorNode\n    } = selection;\n    if (anchorNode === this.#selectedTextNode) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    if (!textLayer) {\n      if (this.#selectedTextNode) {\n        this.#highlightToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false\n        });\n      }\n      return;\n    }\n    this.#highlightToolbar?.hide();\n    this.#selectedTextNode = anchorNode;\n    this.#dispatchUpdateStates({\n      hasSelectedText: true\n    });\n    if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.showAllEditors(\"highlight\", true, true);\n    }\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\n    if (!this.isShiftKeyDown) {\n      const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n      activeLayer?.toggleDrawing();\n      const ac = new AbortController();\n      const signal = this.combinedSignal(ac);\n      const pointerup = e => {\n        if (e.type === \"pointerup\" && e.button !== 0) {\n          return;\n        }\n        ac.abort();\n        activeLayer?.toggleDrawing(true);\n        if (e.type === \"pointerup\") {\n          this.#onSelectEnd(\"main_toolbar\");\n        }\n      };\n      window.addEventListener(\"pointerup\", pointerup, {\n        signal\n      });\n      window.addEventListener(\"blur\", pointerup, {\n        signal\n      });\n    }\n  }\n  #onSelectEnd(methodOfCreation = \"\") {\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.highlightSelection(methodOfCreation);\n    } else if (this.#enableHighlightFloatingButton) {\n      this.#displayHighlightToolbar();\n    }\n  }\n  #addSelectionListener() {\n    document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n      signal: this._signal\n    });\n  }\n  #addFocusManager() {\n    if (this.#focusManagerAC) {\n      return;\n    }\n    this.#focusManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#focusManagerAC);\n    window.addEventListener(\"focus\", this.focus.bind(this), {\n      signal\n    });\n    window.addEventListener(\"blur\", this.blur.bind(this), {\n      signal\n    });\n  }\n  #removeFocusManager() {\n    this.#focusManagerAC?.abort();\n    this.#focusManagerAC = null;\n  }\n  blur() {\n    this.isShiftKeyDown = false;\n    if (this.#highlightWhenShiftUp) {\n      this.#highlightWhenShiftUp = false;\n      this.#onSelectEnd(\"main_toolbar\");\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    const {\n      activeElement\n    } = document;\n    for (const editor of this.#selectedEditors) {\n      if (editor.div.contains(activeElement)) {\n        this.#lastActiveElement = [editor, activeElement];\n        editor._focusEventsAllowed = false;\n        break;\n      }\n    }\n  }\n  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\"focusin\", () => {\n      lastEditor._focusEventsAllowed = true;\n    }, {\n      once: true,\n      signal: this._signal\n    });\n    lastActiveElement.focus();\n  }\n  #addKeyboardManager() {\n    if (this.#keyboardManagerAC) {\n      return;\n    }\n    this.#keyboardManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#keyboardManagerAC);\n    window.addEventListener(\"keydown\", this.keydown.bind(this), {\n      signal\n    });\n    window.addEventListener(\"keyup\", this.keyup.bind(this), {\n      signal\n    });\n  }\n  #removeKeyboardManager() {\n    this.#keyboardManagerAC?.abort();\n    this.#keyboardManagerAC = null;\n  }\n  #addCopyPasteListeners() {\n    if (this.#copyPasteAC) {\n      return;\n    }\n    this.#copyPasteAC = new AbortController();\n    const signal = this.combinedSignal(this.#copyPasteAC);\n    document.addEventListener(\"copy\", this.copy.bind(this), {\n      signal\n    });\n    document.addEventListener(\"cut\", this.cut.bind(this), {\n      signal\n    });\n    document.addEventListener(\"paste\", this.paste.bind(this), {\n      signal\n    });\n  }\n  #removeCopyPasteListeners() {\n    this.#copyPasteAC?.abort();\n    this.#copyPasteAC = null;\n  }\n  #addDragAndDropListeners() {\n    const signal = this._signal;\n    document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n      signal\n    });\n    document.addEventListener(\"drop\", this.drop.bind(this), {\n      signal\n    });\n  }\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.#addCopyPasteListeners();\n  }\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.#removeCopyPasteListeners();\n  }\n  dragOver(event) {\n    for (const {\n      type\n    } of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(type)) {\n          event.dataTransfer.dropEffect = \"copy\";\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n  drop(event) {\n    for (const item of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n  copy(event) {\n    event.preventDefault();\n    this.#activeEditor?.commitOrRemove();\n    if (!this.hasSelection) {\n      return;\n    }\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n  async paste(event) {\n    event.preventDefault();\n    const {\n      clipboardData\n    } = event;\n    for (const item of clipboardData.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          return;\n        }\n      }\n    }\n    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n    if (!Array.isArray(data)) {\n      return;\n    }\n    this.unselectAll();\n    const layer = this.currentLayer;\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = await layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\n      }\n      const cmd = () => {\n        for (const editor of newEditors) {\n          this.#addEditorToLayer(editor);\n        }\n        this.#selectEditors(newEditors);\n      };\n      const undo = () => {\n        for (const editor of newEditors) {\n          editor.remove();\n        }\n      };\n      this.addCommands({\n        cmd,\n        undo,\n        mustExec: true\n      });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n  keydown(event) {\n    if (!this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = true;\n    }\n    if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n  keyup(event) {\n    if (this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = false;\n      if (this.#highlightWhenShiftUp) {\n        this.#highlightWhenShiftUp = false;\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n  onEditingAction({\n    name\n  }) {\n    switch (name) {\n      case \"undo\":\n      case \"redo\":\n      case \"delete\":\n      case \"selectAll\":\n        this[name]();\n        break;\n      case \"highlightSelection\":\n        this.highlightSelection(\"context_menu\");\n        break;\n    }\n  }\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details)\n      });\n      if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n        this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n      }\n    }\n  }\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details\n    });\n  }\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\n      this.#addCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\n        isEmpty: this.#isEmpty(),\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n        hasSelectedEditor: false\n      });\n    } else {\n      this.#removeFocusManager();\n      this.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false\n      });\n      this.disableUserSelect(false);\n    }\n  }\n  registerEditorTypes(types) {\n    if (this.#editorTypes) {\n      return;\n    }\n    this.#editorTypes = types;\n    for (const editorType of this.#editorTypes) {\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n    }\n  }\n  getId() {\n    return this.#idManager.id;\n  }\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n  get currentPageIndex() {\n    return this.#currentPageIndex;\n  }\n  addLayer(layer) {\n    this.#allLayers.set(layer.pageIndex, layer);\n    if (this.#isEnabled) {\n      layer.enable();\n    } else {\n      layer.disable();\n    }\n  }\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n  async updateMode(mode, editId = null, isFromKeyboard = false) {\n    if (this.#mode === mode) {\n      return;\n    }\n    if (this.#updateModeCapability) {\n      await this.#updateModeCapability.promise;\n      if (!this.#updateModeCapability) {\n        return;\n      }\n    }\n    this.#updateModeCapability = Promise.withResolvers();\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      this._editorUndoBar?.hide();\n      this.#updateModeCapability.resolve();\n      return;\n    }\n    if (mode === AnnotationEditorType.SIGNATURE) {\n      await this.#signatureManager?.loadSignatures();\n    }\n    this.setEditingState(true);\n    await this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n    if (!editId) {\n      if (isFromKeyboard) {\n        this.addNewEditorFromKeyboard();\n      }\n      this.#updateModeCapability.resolve();\n      return;\n    }\n    for (const editor of this.#allEditors.values()) {\n      if (editor.annotationElementId === editId) {\n        this.setSelected(editor);\n        editor.enterInEditMode();\n      } else {\n        editor.unselect();\n      }\n    }\n    this.#updateModeCapability.resolve();\n  }\n  addNewEditorFromKeyboard() {\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\n      this.currentLayer.addNewEditor();\n    }\n  }\n  updateToolbar(mode) {\n    if (mode === this.#mode) {\n      return;\n    }\n    this._eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      mode\n    });\n  }\n  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n    switch (type) {\n      case AnnotationEditorParamsType.CREATE:\n        this.currentLayer.addNewEditor(value);\n        return;\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        this.#mainHighlightColorPicker?.updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n        this._eventBus.dispatch(\"reporttelemetry\", {\n          source: this,\n          details: {\n            type: \"editing\",\n            data: {\n              type: \"highlight\",\n              action: \"toggle_visibility\"\n            }\n          }\n        });\n        (this.#showAllStates ||= new Map()).set(type, value);\n        this.showAllEditors(\"highlight\", value);\n        break;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.updateParams(type, value);\n    }\n    for (const editorType of this.#editorTypes) {\n      editorType.updateDefaultParams(type, value);\n    }\n  }\n  showAllEditors(type, visible, updateButton = false) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.editorType === type) {\n        editor.show(visible);\n      }\n    }\n    const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n    if (state !== visible) {\n      this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n    }\n  }\n  enableWaiting(mustWait = false) {\n    if (this.#isWaiting === mustWait) {\n      return;\n    }\n    this.#isWaiting = mustWait;\n    for (const layer of this.#allLayers.values()) {\n      if (mustWait) {\n        layer.disableClick();\n      } else {\n        layer.enableClick();\n      }\n      layer.div.classList.toggle(\"waiting\", mustWait);\n    }\n  }\n  async #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      const promises = [];\n      for (const layer of this.#allLayers.values()) {\n        promises.push(layer.enable());\n      }\n      await Promise.all(promises);\n      for (const editor of this.#allEditors.values()) {\n        editor.enable();\n      }\n    }\n  }\n  #disableAll() {\n    this.unselectAll();\n    if (this.#isEnabled) {\n      this.#isEnabled = false;\n      for (const layer of this.#allLayers.values()) {\n        layer.disable();\n      }\n      for (const editor of this.#allEditors.values()) {\n        editor.disable();\n      }\n    }\n  }\n  getEditors(pageIndex) {\n    const editors = [];\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        editors.push(editor);\n      }\n    }\n    return editors;\n  }\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n  removeEditor(editor) {\n    if (editor.div.contains(document.activeElement)) {\n      if (this.#focusMainContainerTimeoutId) {\n        clearTimeout(this.#focusMainContainerTimeoutId);\n      }\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\n        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    if (editor.annotationElementId) {\n      this.#missingCanvases?.delete(editor.annotationElementId);\n    }\n    this.unselect(editor);\n    if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    this.addChangedExistingAnnotation(editor);\n    editor.deleted = true;\n  }\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    this.removeChangedExistingAnnotation(editor);\n    editor.deleted = false;\n  }\n  #addEditorToLayer(editor) {\n    const layer = this.#allLayers.get(editor.pageIndex);\n    if (layer) {\n      layer.addOrRebuild(editor);\n    } else {\n      this.addEditor(editor);\n      this.addToAnnotationStorage(editor);\n    }\n  }\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n  get #lastSelectedEditor() {\n    let ed = null;\n    for (ed of this.#selectedEditors) {}\n    return ed;\n  }\n  updateUI(editor) {\n    if (this.#lastSelectedEditor === editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n  updateUIForDefaultProperties(editorType) {\n    this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n  }\n  toggleSelected(editor) {\n    if (this.#selectedEditors.has(editor)) {\n      this.#selectedEditors.delete(editor);\n      editor.unselect();\n      this.#dispatchUpdateStates({\n        hasSelectedEditor: this.hasSelection\n      });\n      return;\n    }\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true\n    });\n  }\n  setSelected(editor) {\n    this.#currentDrawingSession?.commitOrRemove();\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true\n    });\n  }\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection\n    });\n  }\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n  get isEnterHandled() {\n    return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n  }\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty()\n    });\n    this._editorUndoBar?.hide();\n  }\n  redo() {\n    this.#commandManager.redo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n      isEmpty: this.#isEmpty()\n    });\n  }\n  addCommands(params) {\n    this.#commandManager.add(params);\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: false,\n      isEmpty: this.#isEmpty()\n    });\n  }\n  cleanUndoStack(type) {\n    this.#commandManager.cleanType(type);\n  }\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n    return false;\n  }\n  delete() {\n    this.commitOrRemove();\n    const drawingEditor = this.currentLayer?.endDrawingSession(true);\n    if (!this.hasSelection && !drawingEditor) {\n      return;\n    }\n    const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n    const cmd = () => {\n      this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n      for (const editor of editors) {\n        editor.remove();\n      }\n    };\n    const undo = () => {\n      for (const editor of editors) {\n        this.#addEditorToLayer(editor);\n      }\n    };\n    this.addCommands({\n      cmd,\n      undo,\n      mustExec: true\n    });\n  }\n  commitOrRemove() {\n    this.#activeEditor?.commitOrRemove();\n  }\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n  #selectEditors(editors) {\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    for (const editor of editors) {\n      if (editor.isEmpty()) {\n        continue;\n      }\n      this.#selectedEditors.add(editor);\n      editor.select();\n    }\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection\n    });\n  }\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n  unselectAll() {\n    if (this.#activeEditor) {\n      this.#activeEditor.commitOrRemove();\n      if (this.#mode !== AnnotationEditorType.NONE) {\n        return;\n      }\n    }\n    if (this.#currentDrawingSession?.commitOrRemove()) {\n      return;\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: false\n    });\n  }\n  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n    const TIME_TO_WAIT = 1000;\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\n      this.addCommands({\n        cmd: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(totalX, totalY);\n              editor.translationDone();\n            }\n          }\n        },\n        undo: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(-totalX, -totalY);\n              editor.translationDone();\n            }\n          }\n        },\n        mustExec: false\n      });\n    }, TIME_TO_WAIT);\n    for (const editor of editors) {\n      editor.translateInPage(x, y);\n      editor.translationDone();\n    }\n  }\n  setUpDragSession() {\n    if (!this.hasSelection) {\n      return;\n    }\n    this.disableUserSelect(true);\n    this.#draggingEditors = new Map();\n    for (const editor of this.#selectedEditors) {\n      this.#draggingEditors.set(editor, {\n        savedX: editor.x,\n        savedY: editor.y,\n        savedPageIndex: editor.pageIndex,\n        newX: 0,\n        newY: 0,\n        newPageIndex: -1\n      });\n    }\n  }\n  endDragSession() {\n    if (!this.#draggingEditors) {\n      return false;\n    }\n    this.disableUserSelect(false);\n    const map = this.#draggingEditors;\n    this.#draggingEditors = null;\n    let mustBeAddedInUndoStack = false;\n    for (const [{\n      x,\n      y,\n      pageIndex\n    }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n    }\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\n        const parent = this.#allLayers.get(pageIndex);\n        if (parent) {\n          editor._setParentAndPosition(parent, x, y);\n        } else {\n          editor.pageIndex = pageIndex;\n          editor.x = x;\n          editor.y = y;\n        }\n      }\n    };\n    this.addCommands({\n      cmd: () => {\n        for (const [editor, {\n          newX,\n          newY,\n          newPageIndex\n        }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, {\n          savedX,\n          savedY,\n          savedPageIndex\n        }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true\n    });\n    return true;\n  }\n  dragSelectedEditors(tx, ty) {\n    if (!this.#draggingEditors) {\n      return;\n    }\n    for (const editor of this.#draggingEditors.keys()) {\n      editor.drag(tx, ty);\n    }\n  }\n  rebuild(editor) {\n    if (editor.parent === null) {\n      const parent = this.getLayer(editor.pageIndex);\n      if (parent) {\n        parent.changeParent(editor);\n        parent.addOrRebuild(editor);\n      } else {\n        this.addEditor(editor);\n        this.addToAnnotationStorage(editor);\n        editor.rebuild();\n      }\n    } else {\n      editor.parent.addOrRebuild(editor);\n    }\n  }\n  get isEditorHandlingKeyboard() {\n    return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n  }\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n  getActive() {\n    return this.#activeEditor;\n  }\n  getMode() {\n    return this.#mode;\n  }\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n  getSelectionBoxes(textLayer) {\n    if (!textLayer) {\n      return null;\n    }\n    const selection = document.getSelection();\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n        return null;\n      }\n    }\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight\n    } = textLayer.getBoundingClientRect();\n    let rotator;\n    switch (textLayer.getAttribute(\"data-main-rotation\")) {\n      case \"90\":\n        rotator = (x, y, w, h) => ({\n          x: (y - layerY) / parentHeight,\n          y: 1 - (x + w - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth\n        });\n        break;\n      case \"180\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (x + w - layerX) / parentWidth,\n          y: 1 - (y + h - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight\n        });\n        break;\n      case \"270\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (y + h - layerY) / parentHeight,\n          y: (x - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth\n        });\n        break;\n      default:\n        rotator = (x, y, w, h) => ({\n          x: (x - layerX) / parentWidth,\n          y: (y - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight\n        });\n        break;\n    }\n    const boxes = [];\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      const range = selection.getRangeAt(i);\n      if (range.collapsed) {\n        continue;\n      }\n      for (const {\n        x,\n        y,\n        width,\n        height\n      } of range.getClientRects()) {\n        if (width === 0 || height === 0) {\n          continue;\n        }\n        boxes.push(rotator(x, y, width, height));\n      }\n    }\n    return boxes.length === 0 ? null : boxes;\n  }\n  addChangedExistingAnnotation({\n    annotationElementId,\n    id\n  }) {\n    (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n  }\n  removeChangedExistingAnnotation({\n    annotationElementId\n  }) {\n    this.#changedExistingAnnotations?.delete(annotationElementId);\n  }\n  renderAnnotationElement(annotation) {\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n    if (!editorId) {\n      return;\n    }\n    const editor = this.#annotationStorage.getRawValue(editorId);\n    if (!editor) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n      return;\n    }\n    editor.renderAnnotationElement(annotation);\n  }\n  setMissingCanvas(annotationId, annotationElementId, canvas) {\n    const editor = this.#missingCanvases?.get(annotationId);\n    if (!editor) {\n      return;\n    }\n    editor.setCanvas(annotationElementId, canvas);\n    this.#missingCanvases.delete(annotationId);\n  }\n  addMissingCanvas(annotationId, editor) {\n    (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n  }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n  #altText = null;\n  #altTextDecorative = false;\n  #altTextButton = null;\n  #altTextButtonLabel = null;\n  #altTextTooltip = null;\n  #altTextTooltipTimeout = null;\n  #altTextWasFromKeyBoard = false;\n  #badge = null;\n  #editor = null;\n  #guessedText = null;\n  #textWithDisclaimer = null;\n  #useNewAltTextFlow = false;\n  static #l10nNewButton = null;\n  static _l10n = null;\n  constructor(editor) {\n    this.#editor = editor;\n    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n    AltText.#l10nNewButton ||= Object.freeze({\n      added: \"pdfjs-editor-new-alt-text-added-button\",\n      \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n      missing: \"pdfjs-editor-new-alt-text-missing-button\",\n      \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n      review: \"pdfjs-editor-new-alt-text-to-review-button\",\n      \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n    });\n  }\n  static initialize(l10n) {\n    AltText._l10n ??= l10n;\n  }\n  async render() {\n    const altText = this.#altTextButton = document.createElement(\"button\");\n    altText.className = \"altText\";\n    altText.tabIndex = \"0\";\n    const label = this.#altTextButtonLabel = document.createElement(\"span\");\n    altText.append(label);\n    if (this.#useNewAltTextFlow) {\n      altText.classList.add(\"new\");\n      altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n      label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n    } else {\n      altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n      label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n    }\n    const signal = this.#editor._uiManager._signal;\n    altText.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal\n    });\n    const onClick = event => {\n      event.preventDefault();\n      this.#editor._uiManager.editAltText(this.#editor);\n      if (this.#useNewAltTextFlow) {\n        this.#editor._reportTelemetry({\n          action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n          data: {\n            label: this.#label\n          }\n        });\n      }\n    };\n    altText.addEventListener(\"click\", onClick, {\n      capture: true,\n      signal\n    });\n    altText.addEventListener(\"keydown\", event => {\n      if (event.target === altText && event.key === \"Enter\") {\n        this.#altTextWasFromKeyBoard = true;\n        onClick(event);\n      }\n    }, {\n      signal\n    });\n    await this.#setState();\n    return altText;\n  }\n  get #label() {\n    return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n  }\n  finish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.focus({\n      focusVisible: this.#altTextWasFromKeyBoard\n    });\n    this.#altTextWasFromKeyBoard = false;\n  }\n  isEmpty() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText === null;\n    }\n    return !this.#altText && !this.#altTextDecorative;\n  }\n  hasData() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText !== null || !!this.#guessedText;\n    }\n    return this.isEmpty();\n  }\n  get guessedText() {\n    return this.#guessedText;\n  }\n  async setGuessedText(guessedText) {\n    if (this.#altText !== null) {\n      return;\n    }\n    this.#guessedText = guessedText;\n    this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n      generatedAltText: guessedText\n    });\n    this.#setState();\n  }\n  toggleAltTextBadge(visibility = false) {\n    if (!this.#useNewAltTextFlow || this.#altText) {\n      this.#badge?.remove();\n      this.#badge = null;\n      return;\n    }\n    if (!this.#badge) {\n      const badge = this.#badge = document.createElement(\"div\");\n      badge.className = \"noAltTextBadge\";\n      this.#editor.div.append(badge);\n    }\n    this.#badge.classList.toggle(\"hidden\", !visibility);\n  }\n  serialize(isForCopying) {\n    let altText = this.#altText;\n    if (!isForCopying && this.#guessedText === altText) {\n      altText = this.#textWithDisclaimer;\n    }\n    return {\n      altText,\n      decorative: this.#altTextDecorative,\n      guessedText: this.#guessedText,\n      textWithDisclaimer: this.#textWithDisclaimer\n    };\n  }\n  get data() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative\n    };\n  }\n  set data({\n    altText,\n    decorative,\n    guessedText,\n    textWithDisclaimer,\n    cancel = false\n  }) {\n    if (guessedText) {\n      this.#guessedText = guessedText;\n      this.#textWithDisclaimer = textWithDisclaimer;\n    }\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    if (!cancel) {\n      this.#altText = altText;\n      this.#altTextDecorative = decorative;\n    }\n    this.#setState();\n  }\n  toggle(enabled = false) {\n    if (!this.#altTextButton) {\n      return;\n    }\n    if (!enabled && this.#altTextTooltipTimeout) {\n      clearTimeout(this.#altTextTooltipTimeout);\n      this.#altTextTooltipTimeout = null;\n    }\n    this.#altTextButton.disabled = !enabled;\n  }\n  shown() {\n    this.#editor._reportTelemetry({\n      action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n      data: {\n        label: this.#label\n      }\n    });\n  }\n  destroy() {\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextButtonLabel = null;\n    this.#altTextTooltip = null;\n    this.#badge?.remove();\n    this.#badge = null;\n  }\n  async #setState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n    if (this.#useNewAltTextFlow) {\n      button.classList.toggle(\"done\", !!this.#altText);\n      button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n      this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n      if (!this.#altText) {\n        this.#altTextTooltip?.remove();\n        return;\n      }\n    } else {\n      if (!this.#altText && !this.#altTextDecorative) {\n        button.classList.remove(\"done\");\n        this.#altTextTooltip?.remove();\n        return;\n      }\n      button.classList.add(\"done\");\n      button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n    }\n    let tooltip = this.#altTextTooltip;\n    if (!tooltip) {\n      this.#altTextTooltip = tooltip = document.createElement(\"span\");\n      tooltip.className = \"tooltip\";\n      tooltip.setAttribute(\"role\", \"tooltip\");\n      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      const signal = this.#editor._uiManager._signal;\n      signal.addEventListener(\"abort\", () => {\n        clearTimeout(this.#altTextTooltipTimeout);\n        this.#altTextTooltipTimeout = null;\n      }, {\n        once: true\n      });\n      button.addEventListener(\"mouseenter\", () => {\n        this.#altTextTooltipTimeout = setTimeout(() => {\n          this.#altTextTooltipTimeout = null;\n          this.#altTextTooltip.classList.add(\"show\");\n          this.#editor._reportTelemetry({\n            action: \"alt_text_tooltip\"\n          });\n        }, DELAY_TO_SHOW_TOOLTIP);\n      }, {\n        signal\n      });\n      button.addEventListener(\"mouseleave\", () => {\n        if (this.#altTextTooltipTimeout) {\n          clearTimeout(this.#altTextTooltipTimeout);\n          this.#altTextTooltipTimeout = null;\n        }\n        this.#altTextTooltip?.classList.remove(\"show\");\n      }, {\n        signal\n      });\n    }\n    if (this.#altTextDecorative) {\n      tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n    } else {\n      tooltip.removeAttribute(\"data-l10n-id\");\n      tooltip.textContent = this.#altText;\n    }\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n    const element = this.#editor.getElementForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n  #container;\n  #isPinching = false;\n  #isPinchingStopped = null;\n  #isPinchingDisabled;\n  #onPinchStart;\n  #onPinching;\n  #onPinchEnd;\n  #pointerDownAC = null;\n  #signal;\n  #touchInfo = null;\n  #touchManagerAC;\n  #touchMoveAC = null;\n  constructor({\n    container,\n    isPinchingDisabled = null,\n    isPinchingStopped = null,\n    onPinchStart = null,\n    onPinching = null,\n    onPinchEnd = null,\n    signal\n  }) {\n    this.#container = container;\n    this.#isPinchingStopped = isPinchingStopped;\n    this.#isPinchingDisabled = isPinchingDisabled;\n    this.#onPinchStart = onPinchStart;\n    this.#onPinching = onPinching;\n    this.#onPinchEnd = onPinchEnd;\n    this.#touchManagerAC = new AbortController();\n    this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n    container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n      passive: false,\n      signal: this.#signal\n    });\n  }\n  get MIN_TOUCH_DISTANCE_TO_PINCH() {\n    return 35 / OutputScale.pixelRatio;\n  }\n  #onTouchStart(evt) {\n    if (this.#isPinchingDisabled?.()) {\n      return;\n    }\n    if (evt.touches.length === 1) {\n      if (this.#pointerDownAC) {\n        return;\n      }\n      const pointerDownAC = this.#pointerDownAC = new AbortController();\n      const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n      const container = this.#container;\n      const opts = {\n        capture: true,\n        signal,\n        passive: false\n      };\n      const cancelPointerDown = e => {\n        if (e.pointerType === \"touch\") {\n          this.#pointerDownAC?.abort();\n          this.#pointerDownAC = null;\n        }\n      };\n      container.addEventListener(\"pointerdown\", e => {\n        if (e.pointerType === \"touch\") {\n          stopEvent(e);\n          cancelPointerDown(e);\n        }\n      }, opts);\n      container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n      container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n      return;\n    }\n    if (!this.#touchMoveAC) {\n      this.#touchMoveAC = new AbortController();\n      const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n      const container = this.#container;\n      const opt = {\n        signal,\n        capture: false,\n        passive: false\n      };\n      container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n      const onTouchEnd = this.#onTouchEnd.bind(this);\n      container.addEventListener(\"touchend\", onTouchEnd, opt);\n      container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n      opt.capture = true;\n      container.addEventListener(\"pointerdown\", stopEvent, opt);\n      container.addEventListener(\"pointermove\", stopEvent, opt);\n      container.addEventListener(\"pointercancel\", stopEvent, opt);\n      container.addEventListener(\"pointerup\", stopEvent, opt);\n      this.#onPinchStart?.();\n    }\n    stopEvent(evt);\n    if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n      this.#touchInfo = null;\n      return;\n    }\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    this.#touchInfo = {\n      touch0X: touch0.screenX,\n      touch0Y: touch0.screenY,\n      touch1X: touch1.screenX,\n      touch1Y: touch1.screenY\n    };\n  }\n  #onTouchMove(evt) {\n    if (!this.#touchInfo || evt.touches.length !== 2) {\n      return;\n    }\n    stopEvent(evt);\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    const {\n      screenX: screen0X,\n      screenY: screen0Y\n    } = touch0;\n    const {\n      screenX: screen1X,\n      screenY: screen1Y\n    } = touch1;\n    const touchInfo = this.#touchInfo;\n    const {\n      touch0X: pTouch0X,\n      touch0Y: pTouch0Y,\n      touch1X: pTouch1X,\n      touch1Y: pTouch1Y\n    } = touchInfo;\n    const prevGapX = pTouch1X - pTouch0X;\n    const prevGapY = pTouch1Y - pTouch0Y;\n    const currGapX = screen1X - screen0X;\n    const currGapY = screen1Y - screen0Y;\n    const distance = Math.hypot(currGapX, currGapY) || 1;\n    const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n    if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n      return;\n    }\n    touchInfo.touch0X = screen0X;\n    touchInfo.touch0Y = screen0Y;\n    touchInfo.touch1X = screen1X;\n    touchInfo.touch1Y = screen1Y;\n    if (!this.#isPinching) {\n      this.#isPinching = true;\n      return;\n    }\n    const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n    this.#onPinching?.(origin, pDistance, distance);\n  }\n  #onTouchEnd(evt) {\n    if (evt.touches.length >= 2) {\n      return;\n    }\n    this.#touchMoveAC.abort();\n    this.#touchMoveAC = null;\n    this.#onPinchEnd?.();\n    if (!this.#touchInfo) {\n      return;\n    }\n    stopEvent(evt);\n    this.#touchInfo = null;\n    this.#isPinching = false;\n  }\n  destroy() {\n    this.#touchManagerAC?.abort();\n    this.#touchManagerAC = null;\n    this.#pointerDownAC?.abort();\n    this.#pointerDownAC = null;\n  }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n  #accessibilityData = null;\n  #allResizerDivs = null;\n  #altText = null;\n  #disabled = false;\n  #dragPointerId = null;\n  #dragPointerType = \"\";\n  #keepAspectRatio = false;\n  #resizersDiv = null;\n  #lastPointerCoords = null;\n  #savedDimensions = null;\n  #focusAC = null;\n  #focusedResizerName = \"\";\n  #hasBeenClicked = false;\n  #initialRect = null;\n  #isEditing = false;\n  #isInEditMode = false;\n  #isResizerEnabledForKeyboard = false;\n  #moveInDOMTimeout = null;\n  #prevDragX = 0;\n  #prevDragY = 0;\n  #telemetryTimeouts = null;\n  #touchManager = null;\n  _isCopy = false;\n  _editToolbar = null;\n  _initialOptions = Object.create(null);\n  _initialData = null;\n  _isVisible = true;\n  _uiManager = null;\n  _focusEventsAllowed = true;\n  static _l10n = null;\n  static _l10nResizer = null;\n  #isDraggable = false;\n  #zIndex = AnnotationEditor._zIndex++;\n  static _borderLineWidth = -1;\n  static _colorManager = new ColorManager();\n  static _zIndex = 1;\n  static _telemetryTimeout = 1000;\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n    return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n      args: [-small, 0]\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n      args: [-big, 0]\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n      args: [small, 0]\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n      args: [big, 0]\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n      args: [0, -small]\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n      args: [0, -big]\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n      args: [0, small]\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n      args: [0, big]\n    }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n  }\n  constructor(parameters) {\n    this.parent = parameters.parent;\n    this.id = parameters.id;\n    this.width = this.height = null;\n    this.pageIndex = parameters.parent.pageIndex;\n    this.name = parameters.name;\n    this.div = null;\n    this._uiManager = parameters.uiManager;\n    this.annotationElementId = null;\n    this._willKeepAspectRatio = false;\n    this._initialOptions.isCentered = parameters.isCentered;\n    this._structTreeParentId = null;\n    const {\n      rotation,\n      rawDims: {\n        pageWidth,\n        pageHeight,\n        pageX,\n        pageY\n      }\n    } = this.parent.viewport;\n    this.rotation = rotation;\n    this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n  static get isDrawer() {\n    return false;\n  }\n  static get _defaultLineColor() {\n    return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n  }\n  static deleteAnnotationElement(editor) {\n    const fakeEditor = new FakeEditor({\n      id: editor.parent.getNextId(),\n      parent: editor.parent,\n      uiManager: editor._uiManager\n    });\n    fakeEditor.annotationElementId = editor.annotationElementId;\n    fakeEditor.deleted = true;\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n  }\n  static initialize(l10n, _uiManager) {\n    AnnotationEditor._l10n ??= l10n;\n    AnnotationEditor._l10nResizer ||= Object.freeze({\n      topLeft: \"pdfjs-editor-resizer-top-left\",\n      topMiddle: \"pdfjs-editor-resizer-top-middle\",\n      topRight: \"pdfjs-editor-resizer-top-right\",\n      middleRight: \"pdfjs-editor-resizer-middle-right\",\n      bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n      bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n      bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n      middleLeft: \"pdfjs-editor-resizer-middle-left\"\n    });\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n  static updateDefaultParams(_type, _value) {}\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n  get propertiesToUpdate() {\n    return [];\n  }\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n  get isEnterHandled() {\n    return true;\n  }\n  center() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    switch (this.parentRotation) {\n      case 90:\n        this.x -= this.height * pageHeight / (pageWidth * 2);\n        this.y += this.width * pageWidth / (pageHeight * 2);\n        break;\n      case 180:\n        this.x += this.width / 2;\n        this.y += this.height / 2;\n        break;\n      case 270:\n        this.x += this.height * pageHeight / (pageWidth * 2);\n        this.y -= this.width * pageWidth / (pageHeight * 2);\n        break;\n      default:\n        this.x -= this.width / 2;\n        this.y -= this.height / 2;\n        break;\n    }\n    this.fixAndSetPosition();\n  }\n  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      this.#stopResizing();\n    }\n    this.parent = parent;\n  }\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.#hasBeenClicked) {\n      this.parent.setSelected(this);\n    } else {\n      this.#hasBeenClicked = false;\n    }\n  }\n  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n    event.preventDefault();\n    if (!this.parent?.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n  commit() {\n    this.addToAnnotationStorage();\n  }\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n    this.fixAndSetPosition();\n  }\n  _moveAfterPaste(baseX, baseY) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n    this._onTranslated();\n  }\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n    this.x += x / width;\n    this.y += y / height;\n    this._onTranslating(this.x, this.y);\n    this.fixAndSetPosition();\n  }\n  translate(x, y) {\n    this.#translate(this.parentDimensions, x, y);\n  }\n  translateInPage(x, y) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({\n      block: \"nearest\"\n    });\n  }\n  translationDone() {\n    this._onTranslated(this.x, this.y);\n  }\n  drag(tx, ty) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    const {\n      div,\n      parentDimensions: [parentWidth, parentHeight]\n    } = this;\n    this.x += tx / parentWidth;\n    this.y += ty / parentHeight;\n    if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n      const {\n        x,\n        y\n      } = this.div.getBoundingClientRect();\n      if (this.parent.findNewParent(this, x, y)) {\n        this.x -= Math.floor(this.x);\n        this.y -= Math.floor(this.y);\n      }\n    }\n    let {\n      x,\n      y\n    } = this;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n    const {\n      style\n    } = div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n    this._onTranslating(x, y);\n    div.scrollIntoView({\n      block: \"nearest\"\n    });\n  }\n  _onTranslating(x, y) {}\n  _onTranslated(x, y) {}\n  get _hasBeenMoved() {\n    return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n  }\n  get _hasBeenResized() {\n    return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n  }\n  getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      _borderLineWidth\n    } = AnnotationEditor;\n    const x = _borderLineWidth / parentWidth;\n    const y = _borderLineWidth / parentHeight;\n    switch (this.rotation) {\n      case 90:\n        return [-x, y];\n      case 180:\n        return [x, y];\n      case 270:\n        return [x, -y];\n      default:\n        return [-x, -y];\n    }\n  }\n  get _mustFixPosition() {\n    return true;\n  }\n  fixAndSetPosition(rotation = this.rotation) {\n    const {\n      div: {\n        style\n      },\n      pageDimensions: [pageWidth, pageHeight]\n    } = this;\n    let {\n      x,\n      y,\n      width,\n      height\n    } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n    if (this._mustFixPosition) {\n      switch (rotation) {\n        case 0:\n          x = MathClamp(x, 0, pageWidth - width);\n          y = MathClamp(y, 0, pageHeight - height);\n          break;\n        case 90:\n          x = MathClamp(x, 0, pageWidth - height);\n          y = MathClamp(y, width, pageHeight);\n          break;\n        case 180:\n          x = MathClamp(x, width, pageWidth);\n          y = MathClamp(y, height, pageHeight);\n          break;\n        case 270:\n          x = MathClamp(x, height, pageWidth);\n          y = MathClamp(y, 0, pageHeight - width);\n          break;\n      }\n    }\n    this.x = x /= pageWidth;\n    this.y = y /= pageHeight;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n    this.moveInDOM();\n  }\n  static #rotatePoint(x, y, angle) {\n    switch (angle) {\n      case 90:\n        return [y, -x];\n      case 180:\n        return [-x, -y];\n      case 270:\n        return [-y, x];\n      default:\n        return [x, y];\n    }\n  }\n  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90:\n        {\n          const [pageWidth, pageHeight] = this.pageDimensions;\n          return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n        }\n      case 180:\n        return [-1, 0, 0, -1];\n      case 270:\n        {\n          const [pageWidth, pageHeight] = this.pageDimensions;\n          return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n        }\n      default:\n        return [1, 0, 0, 1];\n    }\n  }\n  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight]\n    } = this;\n    return [pageWidth * parentScale, pageHeight * parentScale];\n  }\n  setDims(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      style\n    } = this.div;\n    style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n    if (!this.#keepAspectRatio) {\n      style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n    }\n  }\n  fixDims() {\n    const {\n      style\n    } = this.div;\n    const {\n      height,\n      width\n    } = style;\n    const widthPercent = width.endsWith(\"%\");\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n    if (widthPercent && heightPercent) {\n      return;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (!widthPercent) {\n      style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n    }\n    if (!this.#keepAspectRatio && !heightPercent) {\n      style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n    }\n  }\n  getInitialTranslation() {\n    return [0, 0];\n  }\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n    const signal = this._uiManager._signal;\n    for (const name of classes) {\n      const div = document.createElement(\"div\");\n      this.#resizersDiv.append(div);\n      div.classList.add(\"resizer\", name);\n      div.setAttribute(\"data-resizer-name\", name);\n      div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n        signal\n      });\n      div.addEventListener(\"contextmenu\", noContextMenu, {\n        signal\n      });\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    this.#altText?.toggle(false);\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    this.#lastPointerCoords = [event.screenX, event.screenY];\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n      passive: true,\n      capture: true,\n      signal\n    });\n    window.addEventListener(\"touchmove\", stopEvent, {\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height\n    };\n    const savedParentCursor = this.parent.div.style.cursor;\n    const savedCursor = this.div.style.cursor;\n    this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n    const pointerUpCallback = () => {\n      ac.abort();\n      this.parent.togglePointerEvents(true);\n      this.#altText?.toggle(true);\n      this._isDraggable = savedDraggable;\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n      this.#addResizeToUndoStack();\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n  }\n  #resize(x, y, width, height) {\n    this.width = width;\n    this.height = height;\n    this.x = x;\n    this.y = y;\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(parentWidth * width, parentHeight * height);\n    this.fixAndSetPosition();\n    this._onResized();\n  }\n  _onResized() {}\n  #addResizeToUndoStack() {\n    if (!this.#savedDimensions) {\n      return;\n    }\n    const {\n      savedX,\n      savedY,\n      savedWidth,\n      savedHeight\n    } = this.#savedDimensions;\n    this.#savedDimensions = null;\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n    this.addCommands({\n      cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n      undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n      mustExec: true\n    });\n  }\n  static _round(x) {\n    return Math.round(x * 10000) / 10000;\n  }\n  #resizerPointermove(name, event) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\n    switch (name) {\n      case \"topLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, 0];\n        getOpposite = (w, h) => [w, h];\n        break;\n      case \"topMiddle\":\n        getPoint = (w, h) => [w / 2, 0];\n        getOpposite = (w, h) => [w / 2, h];\n        break;\n      case \"topRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, 0];\n        getOpposite = (w, h) => [0, h];\n        break;\n      case \"middleRight\":\n        isHorizontal = true;\n        getPoint = (w, h) => [w, h / 2];\n        getOpposite = (w, h) => [0, h / 2];\n        break;\n      case \"bottomRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, h];\n        getOpposite = (w, h) => [0, 0];\n        break;\n      case \"bottomMiddle\":\n        getPoint = (w, h) => [w / 2, h];\n        getOpposite = (w, h) => [w / 2, 0];\n        break;\n      case \"bottomLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, h];\n        getOpposite = (w, h) => [w, 0];\n        break;\n      case \"middleLeft\":\n        isHorizontal = true;\n        getPoint = (w, h) => [0, h / 2];\n        getOpposite = (w, h) => [w, h / 2];\n        break;\n    }\n    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n    const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n    let deltaX, deltaY;\n    if (!event.fromKeyboard) {\n      const {\n        screenX,\n        screenY\n      } = event;\n      const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n      [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n      this.#lastPointerCoords[0] = screenX;\n      this.#lastPointerCoords[1] = screenY;\n    } else {\n      ({\n        deltaX,\n        deltaY\n      } = event);\n    }\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n    } else if (isHorizontal) {\n      ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n    } else {\n      ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n    }\n    const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n    const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n    this._onResizing();\n  }\n  _onResizing() {}\n  altTextFinish() {\n    this.#altText?.finish();\n  }\n  async addEditToolbar() {\n    if (this._editToolbar || this.#isInEditMode) {\n      return this._editToolbar;\n    }\n    this._editToolbar = new EditorToolbar(this);\n    this.div.append(this._editToolbar.render());\n    if (this.#altText) {\n      await this._editToolbar.addAltText(this.#altText);\n    }\n    return this._editToolbar;\n  }\n  removeEditToolbar() {\n    if (!this._editToolbar) {\n      return;\n    }\n    this._editToolbar.remove();\n    this._editToolbar = null;\n    this.#altText?.destroy();\n  }\n  addContainer(container) {\n    const editToolbarDiv = this._editToolbar?.div;\n    if (editToolbarDiv) {\n      editToolbarDiv.before(container);\n    } else {\n      this.div.append(container);\n    }\n  }\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n  async addAltTextButton() {\n    if (this.#altText) {\n      return;\n    }\n    AltText.initialize(AnnotationEditor._l10n);\n    this.#altText = new AltText(this);\n    if (this.#accessibilityData) {\n      this.#altText.data = this.#accessibilityData;\n      this.#accessibilityData = null;\n    }\n    await this.addEditToolbar();\n  }\n  get altTextData() {\n    return this.#altText?.data;\n  }\n  set altTextData(data) {\n    if (!this.#altText) {\n      return;\n    }\n    this.#altText.data = data;\n  }\n  get guessedAltText() {\n    return this.#altText?.guessedText;\n  }\n  async setGuessedAltText(text) {\n    await this.#altText?.setGuessedText(text);\n  }\n  serializeAltText(isForCopying) {\n    return this.#altText?.serialize(isForCopying);\n  }\n  hasAltText() {\n    return !!this.#altText && !this.#altText.isEmpty();\n  }\n  hasAltTextData() {\n    return this.#altText?.hasData() ?? false;\n  }\n  render() {\n    const div = this.div = document.createElement(\"div\");\n    div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    div.className = this.name;\n    div.setAttribute(\"id\", this.id);\n    div.tabIndex = this.#disabled ? -1 : 0;\n    div.setAttribute(\"role\", \"application\");\n    if (this.defaultL10nId) {\n      div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n    }\n    if (!this._isVisible) {\n      div.classList.add(\"hidden\");\n    }\n    this.setInForeground();\n    this.#addFocusListeners();\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n      div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n    }\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n    bindEvents(this, div, [\"keydown\", \"pointerdown\"]);\n    if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n      this.#touchManager ||= new TouchManager({\n        container: div,\n        isPinchingDisabled: () => !this.isSelected,\n        onPinchStart: this.#touchPinchStartCallback.bind(this),\n        onPinching: this.#touchPinchCallback.bind(this),\n        onPinchEnd: this.#touchPinchEndCallback.bind(this),\n        signal: this._uiManager._signal\n      });\n    }\n    this._uiManager._editorUndoBar?.hide();\n    return div;\n  }\n  #touchPinchStartCallback() {\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height\n    };\n    this.#altText?.toggle(false);\n    this.parent.togglePointerEvents(false);\n  }\n  #touchPinchCallback(_origin, prevDistance, distance) {\n    const slowDownFactor = 0.7;\n    let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n    if (factor === 1) {\n      return;\n    }\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n    factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n    const newWidth = AnnotationEditor._round(savedWidth * factor);\n    const newHeight = AnnotationEditor._round(savedHeight * factor);\n    if (newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n    this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n    const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n    const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n    const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n    const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n    this.x = centerX - newTransfCenterPoint[0];\n    this.y = centerY - newTransfCenterPoint[1];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n    this._onResizing();\n  }\n  #touchPinchEndCallback() {\n    this.#altText?.toggle(true);\n    this.parent.togglePointerEvents(true);\n    this.#addResizeToUndoStack();\n  }\n  pointerdown(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      event.preventDefault();\n      return;\n    }\n    this.#hasBeenClicked = true;\n    if (this._isDraggable) {\n      this.#setUpDragSession(event);\n      return;\n    }\n    this.#selectOnPointerEvent(event);\n  }\n  get isSelected() {\n    return this._uiManager.isSelected(this);\n  }\n  #selectOnPointerEvent(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n  }\n  #setUpDragSession(event) {\n    const {\n      isSelected\n    } = this;\n    this._uiManager.setUpDragSession();\n    let hasDraggingStarted = false;\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    const opts = {\n      capture: true,\n      passive: false,\n      signal\n    };\n    const cancelDrag = e => {\n      ac.abort();\n      this.#dragPointerId = null;\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        this.#selectOnPointerEvent(e);\n      }\n      if (hasDraggingStarted) {\n        this._onStopDragging();\n      }\n    };\n    if (isSelected) {\n      this.#prevDragX = event.clientX;\n      this.#prevDragY = event.clientY;\n      this.#dragPointerId = event.pointerId;\n      this.#dragPointerType = event.pointerType;\n      window.addEventListener(\"pointermove\", e => {\n        if (!hasDraggingStarted) {\n          hasDraggingStarted = true;\n          this._onStartDragging();\n        }\n        const {\n          clientX: x,\n          clientY: y,\n          pointerId\n        } = e;\n        if (pointerId !== this.#dragPointerId) {\n          stopEvent(e);\n          return;\n        }\n        const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n        this.#prevDragX = x;\n        this.#prevDragY = y;\n        this._uiManager.dragSelectedEditors(tx, ty);\n      }, opts);\n      window.addEventListener(\"touchmove\", stopEvent, opts);\n      window.addEventListener(\"pointerdown\", e => {\n        if (e.pointerType === this.#dragPointerType) {\n          if (this.#touchManager || e.isPrimary) {\n            cancelDrag(e);\n          }\n        }\n        stopEvent(e);\n      }, opts);\n    }\n    const pointerUpCallback = e => {\n      if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n        cancelDrag(e);\n        return;\n      }\n      stopEvent(e);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n  }\n  _onStartDragging() {}\n  _onStopDragging() {}\n  moveInDOM() {\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n    }\n    this.#moveInDOMTimeout = setTimeout(() => {\n      this.#moveInDOMTimeout = null;\n      this.parent?.moveEditorInDOM(this);\n    }, 0);\n  }\n  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n    this._onTranslated();\n  }\n  getRect(tx, ty, rotation = this.rotation) {\n    const scale = this.parentScale;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const shiftX = tx / scale;\n    const shiftY = ty / scale;\n    const x = this.x * pageWidth;\n    const y = this.y * pageHeight;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n    switch (rotation) {\n      case 0:\n        return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n      case 90:\n        return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n      case 180:\n        return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n      case 270:\n        return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n    const width = x2 - x1;\n    const height = y2 - y1;\n    switch (this.rotation) {\n      case 0:\n        return [x1, pageHeight - y2, width, height];\n      case 90:\n        return [x1, pageHeight - y1, height, width];\n      case 180:\n        return [x2, pageHeight - y1, width, height];\n      case 270:\n        return [x2, pageHeight - y2, height, width];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n  onceAdded(focus) {}\n  isEmpty() {\n    return false;\n  }\n  enableEditMode() {\n    this.#isInEditMode = true;\n  }\n  disableEditMode() {\n    this.#isInEditMode = false;\n  }\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n  get isOnScreen() {\n    const {\n      top,\n      left,\n      bottom,\n      right\n    } = this.getClientDimensions();\n    const {\n      innerHeight,\n      innerWidth\n    } = window;\n    return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n  }\n  #addFocusListeners() {\n    if (this.#focusAC || !this.div) {\n      return;\n    }\n    this.#focusAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#focusAC);\n    this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n      signal\n    });\n    this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n      signal\n    });\n  }\n  rebuild() {\n    this.#addFocusListeners();\n  }\n  rotate(_angle) {}\n  resize() {}\n  serializeDeleted() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n      popupRef: this._initialData?.popupRef || \"\"\n    };\n  }\n  serialize(isForCopying = false, context = null) {\n    unreachable(\"An editor must be serializable\");\n  }\n  static async deserialize(data, parent, uiManager) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n      uiManager\n    });\n    editor.rotation = data.rotation;\n    editor.#accessibilityData = data.accessibilityData;\n    editor._isCopy = data.isCopy || false;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n    return editor;\n  }\n  get hasBeenModified() {\n    return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n  }\n  remove() {\n    this.#focusAC?.abort();\n    this.#focusAC = null;\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n    this.removeEditToolbar();\n    if (this.#telemetryTimeouts) {\n      for (const timeout of this.#telemetryTimeouts.values()) {\n        clearTimeout(timeout);\n      }\n      this.#telemetryTimeouts = null;\n    }\n    this.parent = null;\n    this.#touchManager?.destroy();\n    this.#touchManager = null;\n  }\n  get isResizable() {\n    return false;\n  }\n  makeResizable() {\n    if (this.isResizable) {\n      this.#createResizers();\n      this.#resizersDiv.classList.remove(\"hidden\");\n    }\n  }\n  get toolbarPosition() {\n    return null;\n  }\n  keydown(event) {\n    if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n      return;\n    }\n    this._uiManager.setSelected(this);\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height\n    };\n    const children = this.#resizersDiv.children;\n    if (!this.#allResizerDivs) {\n      this.#allResizerDivs = Array.from(children);\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\n      const boundResizerBlur = this.#resizerBlur.bind(this);\n      const signal = this._uiManager._signal;\n      for (const div of this.#allResizerDivs) {\n        const name = div.getAttribute(\"data-resizer-name\");\n        div.setAttribute(\"role\", \"spinbutton\");\n        div.addEventListener(\"keydown\", boundResizerKeydown, {\n          signal\n        });\n        div.addEventListener(\"blur\", boundResizerBlur, {\n          signal\n        });\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n          signal\n        });\n        div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n    const first = this.#allResizerDivs[0];\n    let firstPosition = 0;\n    for (const div of children) {\n      if (div === first) {\n        break;\n      }\n      firstPosition++;\n    }\n    const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n    if (nextFirstPosition !== firstPosition) {\n      if (nextFirstPosition < firstPosition) {\n        for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n          this.#resizersDiv.append(this.#resizersDiv.firstChild);\n        }\n      } else if (nextFirstPosition > firstPosition) {\n        for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n          this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n        }\n      }\n      let i = 0;\n      for (const child of children) {\n        const div = this.#allResizerDivs[i++];\n        const name = div.getAttribute(\"data-resizer-name\");\n        child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstChild.focus({\n      focusVisible: true\n    });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n  #resizerBlur(event) {\n    if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n      this.#stopResizing();\n    }\n  }\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n  }\n  #setResizerTabIndex(value) {\n    if (!this.#allResizerDivs) {\n      return;\n    }\n    for (const div of this.#allResizerDivs) {\n      div.tabIndex = value;\n    }\n  }\n  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      deltaX: x,\n      deltaY: y,\n      fromKeyboard: true\n    });\n  }\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    this.#addResizeToUndoStack();\n  }\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n  select() {\n    this.makeResizable();\n    this.div?.classList.add(\"selectedEditor\");\n    if (!this._editToolbar) {\n      this.addEditToolbar().then(() => {\n        if (this.div?.classList.contains(\"selectedEditor\")) {\n          this._editToolbar?.show();\n        }\n      });\n      return;\n    }\n    this._editToolbar?.show();\n    this.#altText?.toggleAltTextBadge(false);\n  }\n  unselect() {\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      this._uiManager.currentLayer.div.focus({\n        preventScroll: true\n      });\n    }\n    this._editToolbar?.hide();\n    this.#altText?.toggleAltTextBadge(true);\n  }\n  updateParams(type, value) {}\n  disableEditing() {}\n  enableEditing() {}\n  enterInEditMode() {}\n  getElementForAltText() {\n    return this.div;\n  }\n  get contentDiv() {\n    return this.div;\n  }\n  get isEditing() {\n    return this.#isEditing;\n  }\n  set isEditing(value) {\n    this.#isEditing = value;\n    if (!this.parent) {\n      return;\n    }\n    if (value) {\n      this.parent.setSelected(this);\n      this.parent.setActiveEditor(this);\n    } else {\n      this.parent.setActiveEditor(null);\n    }\n  }\n  setAspectRatio(width, height) {\n    this.#keepAspectRatio = true;\n    const aspectRatio = width / height;\n    const {\n      style\n    } = this.div;\n    style.aspectRatio = aspectRatio;\n    style.height = \"auto\";\n  }\n  static get MIN_SIZE() {\n    return 16;\n  }\n  static canCreateNewEmptyEditor() {\n    return true;\n  }\n  get telemetryInitialData() {\n    return {\n      action: \"added\"\n    };\n  }\n  get telemetryFinalData() {\n    return null;\n  }\n  _reportTelemetry(data, mustWait = false) {\n    if (mustWait) {\n      this.#telemetryTimeouts ||= new Map();\n      const {\n        action\n      } = data;\n      let timeout = this.#telemetryTimeouts.get(action);\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(() => {\n        this._reportTelemetry(data);\n        this.#telemetryTimeouts.delete(action);\n        if (this.#telemetryTimeouts.size === 0) {\n          this.#telemetryTimeouts = null;\n        }\n      }, AnnotationEditor._telemetryTimeout);\n      this.#telemetryTimeouts.set(action, timeout);\n      return;\n    }\n    data.type ||= this.editorType;\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        data\n      }\n    });\n  }\n  show(visible = this._isVisible) {\n    this.div.classList.toggle(\"hidden\", !visible);\n    this._isVisible = visible;\n  }\n  enable() {\n    if (this.div) {\n      this.div.tabIndex = 0;\n    }\n    this.#disabled = false;\n  }\n  disable() {\n    if (this.div) {\n      this.div.tabIndex = -1;\n    }\n    this.#disabled = true;\n  }\n  renderAnnotationElement(annotation) {\n    let content = annotation.container.querySelector(\".annotationContent\");\n    if (!content) {\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      annotation.container.prepend(content);\n    } else if (content.nodeName === \"CANVAS\") {\n      const canvas = content;\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      canvas.before(content);\n    }\n    return content;\n  }\n  resetAnnotationElement(annotation) {\n    const {\n      firstChild\n    } = annotation.container;\n    if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n      firstChild.remove();\n    }\n  }\n}\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n  serialize() {\n    return this.serializeDeleted();\n  }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (ArrayBuffer.isView(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n    }\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        h1 ^= k1;\n        h1 = h1 << 13 | h1 >>> 19;\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n        k2 = k2 << 15 | k2 >>> 17;\n        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n        h2 ^= k2;\n        h2 = h2 << 13 | h2 >>> 19;\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n    k1 = 0;\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n  }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined\n});\nclass AnnotationStorage {\n  #modified = false;\n  #modifiedIds = null;\n  #storage = new Map();\n  constructor() {\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n  }\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n    return Object.assign(defaultValue, value);\n  }\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n  remove(key) {\n    this.#storage.delete(key);\n    if (this.#storage.size === 0) {\n      this.resetModified();\n    }\n    if (typeof this.onAnnotationEditor === \"function\") {\n      for (const value of this.#storage.values()) {\n        if (value instanceof AnnotationEditor) {\n          return;\n        }\n      }\n      this.onAnnotationEditor(null);\n    }\n  }\n  setValue(key, value) {\n    const obj = this.#storage.get(key);\n    let modified = false;\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n      this.#storage.set(key, value);\n    }\n    if (modified) {\n      this.#setModified();\n    }\n    if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n      this.onAnnotationEditor(value.constructor._type);\n    }\n  }\n  has(key) {\n    return this.#storage.has(key);\n  }\n  getAll() {\n    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n  }\n  setAll(obj) {\n    for (const [key, val] of Object.entries(obj)) {\n      this.setValue(key, val);\n    }\n  }\n  get size() {\n    return this.#storage.size;\n  }\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n  resetModified() {\n    if (this.#modified) {\n      this.#modified = false;\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n  get serializable() {\n    if (this.#storage.size === 0) {\n      return SerializableEmpty;\n    }\n    const map = new Map(),\n      hash = new MurmurHash3_64(),\n      transfer = [];\n    const context = Object.create(null);\n    let hasBitmap = false;\n    for (const [key, val] of this.#storage) {\n      const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n      if (serialized) {\n        map.set(key, serialized);\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n    if (hasBitmap) {\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n    return map.size > 0 ? {\n      map,\n      hash: hash.hexdigest(),\n      transfer\n    } : SerializableEmpty;\n  }\n  get editorStats() {\n    let stats = null;\n    const typeToEditor = new Map();\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor)) {\n        continue;\n      }\n      const editorStats = value.telemetryFinalData;\n      if (!editorStats) {\n        continue;\n      }\n      const {\n        type\n      } = editorStats;\n      if (!typeToEditor.has(type)) {\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n      }\n      stats ||= Object.create(null);\n      const map = stats[type] ||= new Map();\n      for (const [key, val] of Object.entries(editorStats)) {\n        if (key === \"type\") {\n          continue;\n        }\n        let counters = map.get(key);\n        if (!counters) {\n          counters = new Map();\n          map.set(key, counters);\n        }\n        const count = counters.get(val) ?? 0;\n        counters.set(val, count + 1);\n      }\n    }\n    for (const [type, editor] of typeToEditor) {\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\n    }\n    return stats;\n  }\n  resetModifiedIds() {\n    this.#modifiedIds = null;\n  }\n  get modifiedIds() {\n    if (this.#modifiedIds) {\n      return this.#modifiedIds;\n    }\n    const ids = [];\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n        continue;\n      }\n      ids.push(value.annotationElementId);\n    }\n    return this.#modifiedIds = {\n      ids: new Set(ids),\n      hash: ids.join(\",\")\n    };\n  }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n  constructor(parent) {\n    super();\n    const {\n      map,\n      hash,\n      transfer\n    } = parent.serializable;\n    const clone = structuredClone(map, transfer ? {\n      transfer\n    } : null);\n    this.#serializable = {\n      map: clone,\n      hash,\n      transfer\n    };\n  }\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n  get serializable() {\n    return this.#serializable;\n  }\n  get modifiedIds() {\n    return shadow(this, \"modifiedIds\", {\n      ids: new Set(),\n      hash: \"\"\n    });\n  }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n  #systemFonts = new Set();\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null\n  }) {\n    this._document = ownerDocument;\n    this.nativeFontFaces = new Set();\n    this.styleElement = null;\n    this.loadingRequests = [];\n    this.loadTestFontId = 0;\n  }\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n    }\n    const styleSheet = this.styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n  clear() {\n    for (const nativeFontFace of this.nativeFontFaces) {\n      this._document.fonts.delete(nativeFontFace);\n    }\n    this.nativeFontFaces.clear();\n    this.#systemFonts.clear();\n    if (this.styleElement) {\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n  async loadSystemFont({\n    systemFontInfo: info,\n    disableFontFace,\n    _inspectFont\n  }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n    if (this.isFontLoadingAPISupported) {\n      const {\n        loadedName,\n        src,\n        style\n      } = info;\n      const fontFace = new FontFace(loadedName, src, style);\n      this.addNativeFontFace(fontFace);\n      try {\n        await fontFace.load();\n        this.#systemFonts.add(loadedName);\n        _inspectFont?.(info);\n      } catch {\n        warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n    unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n  }\n  async bind(font) {\n    if (font.attached || font.missingFile && !font.systemFontInfo) {\n      return;\n    }\n    font.attached = true;\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\n    }\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return;\n    }\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n      if (this.isSyncFontLoadingSupported) {\n        return;\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n    }\n  }\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n  get isSyncFontLoadingSupported() {\n    return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n  }\n  _queueLoadingCallback(callback) {\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n    const {\n      loadingRequests\n    } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n  get _loadTestFont() {\n    const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n  _prepareFontLoadEvent(font, request) {\n    function int32(data, offset) {\n      return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n    }\n    function spliceString(s, offset, remove, insert) {\n      const chunk1 = s.substring(0, offset);\n      const chunk2 = s.substring(offset + remove);\n      return chunk1 + insert + chunk2;\n    }\n    let i, ii;\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n    let called = 0;\n    function isFontReady(name, callback) {\n      if (++called > 30) {\n        warn(\"Load test font never loaded.\");\n        callback();\n        return;\n      }\n      ctx.font = \"30px \" + name;\n      ctx.fillText(\".\", 0, 20);\n      const imageData = ctx.getImageData(0, 0, 1, 1);\n      if (imageData.data[3] > 0) {\n        callback();\n        return;\n      }\n      setTimeout(isFontReady.bind(null, name, callback));\n    }\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976;\n    data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858;\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n    for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n      checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n    }\n    if (i < loadTestFontId.length) {\n      checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n    const url = `url(data:font/opentype;base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n    this.insertRule(rule);\n    const div = this._document.createElement(\"div\");\n    div.style.visibility = \"hidden\";\n    div.style.width = div.style.height = \"10px\";\n    div.style.position = \"absolute\";\n    div.style.top = div.style.left = \"0px\";\n    for (const name of [font.loadedName, loadTestFontId]) {\n      const span = this._document.createElement(\"span\");\n      span.textContent = \"Hi\";\n      span.style.fontFamily = name;\n      div.append(span);\n    }\n    this._document.body.append(div);\n    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n  }\n}\nclass FontFaceObject {\n  constructor(translatedData, inspectFont = null) {\n    this.compiledGlyphs = Object.create(null);\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this._inspectFont = inspectFont;\n  }\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    let nativeFontFace;\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight\n      };\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n      nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n    }\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n    let rule;\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n    this._inspectFont?.(this, url);\n    return rule;\n  }\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n    const objId = this.loadedName + \"_path_\" + character;\n    let cmds;\n    try {\n      cmds = objs.get(objId);\n    } catch (ex) {\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n    }\n    const path = new Path2D(cmds || \"\");\n    if (!this.fontExtraProperties) {\n      objs.delete(objId);\n    }\n    return this.compiledGlyphs[character] = path;\n  }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n  DATA: 1,\n  ERROR: 2\n};\nconst StreamKind = {\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n  if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n    return ex;\n  }\n  if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n    unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n  }\n  switch (ex.name) {\n    case \"AbortException\":\n      return new AbortException(ex.message);\n    case \"InvalidPDFException\":\n      return new InvalidPDFException(ex.message);\n    case \"PasswordException\":\n      return new PasswordException(ex.message, ex.code);\n    case \"ResponseException\":\n      return new ResponseException(ex.message, ex.status, ex.missing);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(ex.message, ex.details);\n  }\n  return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n  #messageAC = new AbortController();\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n      signal: this.#messageAC.signal\n    });\n  }\n  #onMessage({\n    data\n  }) {\n    if (data.targetName !== this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      this.#processStreamMessage(data);\n      return;\n    }\n    if (data.callback) {\n      const callbackId = data.callbackId;\n      const capability = this.callbackCapabilities[callbackId];\n      if (!capability) {\n        throw new Error(`Cannot resolve callback ${callbackId}`);\n      }\n      delete this.callbackCapabilities[callbackId];\n      if (data.callback === CallbackKind.DATA) {\n        capability.resolve(data.data);\n      } else if (data.callback === CallbackKind.ERROR) {\n        capability.reject(wrapReason(data.reason));\n      } else {\n        throw new Error(\"Unexpected callback case\");\n      }\n      return;\n    }\n    const action = this.actionHandler[data.action];\n    if (!action) {\n      throw new Error(`Unknown action from worker: ${data.action}`);\n    }\n    if (data.callbackId) {\n      const sourceName = this.sourceName,\n        targetName = data.sourceName,\n        comObj = this.comObj;\n      Promise.try(action, data.data).then(function (result) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          callback: CallbackKind.DATA,\n          callbackId: data.callbackId,\n          data: result\n        });\n      }, function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          callback: CallbackKind.ERROR,\n          callbackId: data.callbackId,\n          reason: wrapReason(reason)\n        });\n      });\n      return;\n    }\n    if (data.streamId) {\n      this.#createStreamSink(data);\n      return;\n    }\n    action(data.data);\n  }\n  on(actionName, handler) {\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n  send(actionName, data, transfers) {\n    this.comObj.postMessage({\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data\n    }, transfers);\n  }\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = Promise.withResolvers();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage({\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        callbackId,\n        data\n      }, transfers);\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n    return new ReadableStream({\n      start: controller => {\n        const startCapability = Promise.withResolvers();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          pullCall: null,\n          cancelCall: null,\n          isClosed: false\n        };\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize\n        }, transfers);\n        return startCapability.promise;\n      },\n      pull: controller => {\n        const pullCapability = Promise.withResolvers();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.PULL,\n          streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: reason => {\n        assert(reason instanceof Error, \"cancel must have a valid reason\");\n        const cancelCapability = Promise.withResolvers();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CANCEL,\n          streamId,\n          reason: wrapReason(reason)\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  }\n  #createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = Promise.withResolvers();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ENQUEUE,\n          streamId,\n          chunk\n        }, transfers);\n      },\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId\n        });\n        delete self.streamSinks[streamId];\n      },\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason)\n        });\n      },\n      sinkCapability: Promise.withResolvers(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    Promise.try(action, data.data, streamSink).then(function () {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        success: true\n      });\n    }, function (reason) {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        reason: wrapReason(reason)\n      });\n    });\n  }\n  #processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n          break;\n        }\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        streamSink.desiredSize = data.desiredSize;\n        Promise.try(streamSink.onPull || onFn).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n        const dataReason = wrapReason(data.reason);\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        streamSink.sinkCapability.reject(dataReason);\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n  async #deleteStreamController(streamController, streamId) {\n    await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n    delete this.streamControllers[streamId];\n  }\n  destroy() {\n    this.#messageAC?.abort();\n    this.#messageAC = null;\n  }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n  #enableHWA = false;\n  constructor({\n    enableHWA = false\n  }) {\n    this.#enableHWA = enableHWA;\n  }\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    const canvas = this._createCanvas(width, height);\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\", {\n        willReadFrequently: !this.#enableHWA\n      })\n    };\n  }\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({\n    ownerDocument = globalThis.document,\n    enableHWA = false\n  }) {\n    super({\n      enableHWA\n    });\n    this._document = ownerDocument;\n  }\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n  constructor({\n    baseUrl = null,\n    isCompressed = true\n  }) {\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n  async fetch({\n    name\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    return this._fetch(url).then(cMapData => ({\n      cMapData,\n      isCompressed: this.isCompressed\n    })).catch(reason => {\n      throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n    });\n  }\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  async _fetch(url) {\n    const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n    return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n  }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n  addFilter(maps) {\n    return \"none\";\n  }\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n  addAlphaFilter(map) {\n    return \"none\";\n  }\n  addLuminosityFilter(map) {\n    return \"none\";\n  }\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n  destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n  #baseUrl;\n  #_cache;\n  #_defs;\n  #docId;\n  #document;\n  #_hcmCache;\n  #id = 0;\n  constructor({\n    docId,\n    ownerDocument = globalThis.document\n  }) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n  get #cache() {\n    return this.#_cache ||= new Map();\n  }\n  get #hcmCache() {\n    return this.#_hcmCache ||= new Map();\n  }\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const {\n        style\n      } = div;\n      style.visibility = \"hidden\";\n      style.contain = \"strict\";\n      style.width = style.height = 0;\n      style.position = \"absolute\";\n      style.top = style.left = 0;\n      style.zIndex = -1;\n      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n      svg.setAttribute(\"width\", 0);\n      svg.setAttribute(\"height\", 0);\n      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n      div.append(svg);\n      svg.append(this.#_defs);\n      this.#document.body.append(div);\n    }\n    return this.#_defs;\n  }\n  #createTables(maps) {\n    if (maps.length === 1) {\n      const mapR = maps[0];\n      const buffer = new Array(256);\n      for (let i = 0; i < 256; i++) {\n        buffer[i] = mapR[i] / 255;\n      }\n      const table = buffer.join(\",\");\n      return [table, table, table];\n    }\n    const [mapR, mapG, mapB] = maps;\n    const bufferR = new Array(256);\n    const bufferG = new Array(256);\n    const bufferB = new Array(256);\n    for (let i = 0; i < 256; i++) {\n      bufferR[i] = mapR[i] / 255;\n      bufferG[i] = mapG[i] / 255;\n      bufferB[i] = mapB[i] / 255;\n    }\n    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n  }\n  #createUrl(id) {\n    if (this.#baseUrl === undefined) {\n      this.#baseUrl = \"\";\n      const url = this.#document.URL;\n      if (url !== this.#document.baseURI) {\n        if (isDataScheme(url)) {\n          warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n        } else {\n          this.#baseUrl = url.split(\"#\", 1)[0];\n        }\n      }\n    }\n    return `url(${this.#baseUrl}#${id})`;\n  }\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n    const [tableR, tableG, tableB] = this.#createTables(maps);\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n    return url;\n  }\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    const filterName = \"base\";\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n    const fgRGB = this.#getRGB(fgColor);\n    fgColor = Util.makeHexColor(...fgRGB);\n    const bgRGB = this.#getRGB(bgColor);\n    bgColor = Util.makeHexColor(...bgRGB);\n    this.#defs.style.color = \"\";\n    if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n      return info.url;\n    }\n    const map = new Array(256);\n    for (let i = 0; i <= 255; i++) {\n      const x = i / 255;\n      map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n    }\n    const table = map.join(\",\");\n    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = info.filter = this.#createFilter(id);\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\n    const getSteps = (c, n) => {\n      const start = fgRGB[c] / 255;\n      const end = bgRGB[c] / 255;\n      const arr = new Array(n + 1);\n      for (let i = 0; i <= n; i++) {\n        arr[i] = start + i / n * (end - start);\n      }\n      return arr.join(\",\");\n    };\n    this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n  addAlphaFilter(map) {\n    let value = this.#cache.get(map);\n    if (value) {\n      return value;\n    }\n    const [tableA] = this.#createTables([map]);\n    const key = `alpha_${tableA}`;\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addTransferMapAlphaConversion(tableA, filter);\n    return url;\n  }\n  addLuminosityFilter(map) {\n    let value = this.#cache.get(map || \"luminosity\");\n    if (value) {\n      return value;\n    }\n    let tableA, key;\n    if (map) {\n      [tableA] = this.#createTables([map]);\n      key = `luminosity_${tableA}`;\n    } else {\n      key = \"luminosity\";\n    }\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addLuminosityConversion(filter);\n    if (map) {\n      this.#addTransferMapAlphaConversion(tableA, filter);\n    }\n    return url;\n  }\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n    let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n    }\n    this.#defs.style.color = \"\";\n    const getSteps = (fg, bg, n) => {\n      const arr = new Array(256);\n      const step = (bgGray - fgGray) / n;\n      const newStart = fg / 255;\n      const newStep = (bg - fg) / (255 * n);\n      let prev = 0;\n      for (let i = 0; i <= n; i++) {\n        const k = Math.round(fgGray + i * step);\n        const value = newStart + i * newStep;\n        for (let j = prev; j <= k; j++) {\n          arr[j] = value;\n        }\n        prev = k + 1;\n      }\n      for (let i = prev; i < 256; i++) {\n        arr[i] = arr[prev - 1];\n      }\n      return arr.join(\",\");\n    };\n    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n    const filter = info.filter = this.#createFilter(id);\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n  destroy(keepHCM = false) {\n    if (keepHCM && this.#_hcmCache?.size) {\n      return;\n    }\n    this.#_defs?.parentNode.parentNode.remove();\n    this.#_defs = null;\n    this.#_cache?.clear();\n    this.#_cache = null;\n    this.#_hcmCache?.clear();\n    this.#_hcmCache = null;\n    this.#id = 0;\n  }\n  #addLuminosityConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n    filter.append(feColorMatrix);\n  }\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n    filter.append(feColorMatrix);\n  }\n  #createFilter(id) {\n    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n    filter.setAttribute(\"id\", id);\n    this.#defs.append(filter);\n    return filter;\n  }\n  #appendFeFunc(feComponentTransfer, func, table) {\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\n    feFunc.setAttribute(\"type\", \"discrete\");\n    feFunc.setAttribute(\"tableValues\", table);\n    feComponentTransfer.append(feFunc);\n  }\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n  #addTransferMapAlphaConversion(aTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n  }\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n  constructor({\n    baseUrl = null\n  }) {\n    this.baseUrl = baseUrl;\n  }\n  async fetch({\n    filename\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  async _fetch(url) {\n    const data = await fetchData(url, \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\n;// ./src/display/wasm_factory.js\n\n\nclass BaseWasmFactory {\n  constructor({\n    baseUrl = null\n  }) {\n    this.baseUrl = baseUrl;\n  }\n  async fetch({\n    filename\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n    }\n    if (!filename) {\n      throw new Error(\"Wasm filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load wasm data at: ${url}`);\n    });\n  }\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n  async _fetch(url) {\n    const data = await fetchData(url, \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\nif (isNodeJS) {\n  warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n  const fs = process.getBuiltinModule(\"fs\");\n  const data = await fs.promises.readFile(url);\n  return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  _createCanvas(width, height) {\n    const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n    const canvas = require(\"@napi-rs/canvas\");\n    return canvas.createCanvas(width, height);\n  }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  async _fetch(url) {\n    return node_utils_fetchData(url);\n  }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  async _fetch(url) {\n    return node_utils_fetchData(url);\n  }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n  async _fetch(url) {\n    return node_utils_fetchData(url);\n  }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox) {\n    return;\n  }\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\nclass BaseShadingPattern {\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\n  }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._type = IR[1];\n    this._bbox = IR[2];\n    this._colorStops = IR[3];\n    this._p0 = IR[4];\n    this._p1 = IR[5];\n    this._r0 = IR[6];\n    this._r1 = IR[7];\n    this.matrix = null;\n  }\n  _createGradient(ctx) {\n    let grad;\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n    }\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n      const tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.beginPath();\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  const coords = context.coords,\n    colors = context.colors;\n  const bytes = data.data,\n    rowSize = data.width * 4;\n  let tmp;\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n  if (y1 >= y3) {\n    return;\n  }\n  const c1r = colors[c1],\n    c1g = colors[c1 + 1],\n    c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n    c2g = colors[c2 + 1],\n    c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n    c3g = colors[c3 + 1],\n    c3b = colors[c3 + 2];\n  const minY = Math.round(y1),\n    maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n    let k;\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n      bytes[j++] = car - (car - cbr) * k | 0;\n      bytes[j++] = cag - (cag - cbg) * k | 0;\n      bytes[j++] = cab - (cab - cbb) * k | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n  switch (figure.type) {\n    case \"lattice\":\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n          drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[6];\n    this._background = IR[7];\n    this.matrix = null;\n  }\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    const EXPECTED_SCALE = 1.1;\n    const MAX_PATTERN_SIZE = 3000;\n    const BORDER_SIZE = 2;\n    const offsetX = Math.floor(this._bounds[0]);\n    const offsetY = Math.floor(this._bounds[1]);\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n    const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n    const context = {\n      coords: this._coords,\n      colors: this._colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY\n    };\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n    const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n    const tmpCtx = tmpCanvas.context;\n    const data = tmpCtx.createImageData(width, height);\n    if (backgroundColor) {\n      const bytes = data.data;\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY\n    };\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    let scale;\n    if (pathType === PathType.SHADING) {\n      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n    } else {\n      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n      if (this.matrix) {\n        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n      }\n    }\n    const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n    ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n}\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2\n};\nclass TilingPattern {\n  static MAX_PATTERN_SIZE = 3000;\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n  createPatternCanvas(owner) {\n    const {\n      bbox,\n      operatorList,\n      paintType,\n      tilingType,\n      color,\n      canvasGraphicsFactory\n    } = this;\n    let {\n      xstep,\n      ystep\n    } = this;\n    xstep = Math.abs(xstep);\n    ystep = Math.abs(ystep);\n    info(\"TilingType: \" + tilingType);\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n    const width = x1 - x0;\n    const height = y1 - y0;\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n    const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n    const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n    const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n    let canvasWidth = width,\n      canvasHeight = height,\n      redrawHorizontally = false,\n      redrawVertically = false;\n    const xScaledStep = Math.ceil(xstep * combinedScaleX);\n    const yScaledStep = Math.ceil(ystep * combinedScaleY);\n    const xScaledWidth = Math.ceil(width * combinedScaleX);\n    const yScaledHeight = Math.ceil(height * combinedScaleY);\n    if (xScaledStep >= xScaledWidth) {\n      canvasWidth = xstep;\n    } else {\n      redrawHorizontally = true;\n    }\n    if (yScaledStep >= yScaledHeight) {\n      canvasHeight = ystep;\n    } else {\n      redrawVertically = true;\n    }\n    const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n    const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n    tmpCtx.save();\n    this.clipBbox(graphics, x0, y0, x1, y1);\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n    graphics.executeOperatorList(operatorList);\n    graphics.endDrawing();\n    tmpCtx.restore();\n    if (redrawHorizontally || redrawVertically) {\n      const image = tmpCanvas.canvas;\n      if (redrawHorizontally) {\n        canvasWidth = xstep;\n      }\n      if (redrawVertically) {\n        canvasHeight = ystep;\n      }\n      const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n      const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n      const xSize = dimx2.size;\n      const ySize = dimy2.size;\n      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n      const tmpCtx2 = tmpCanvas2.context;\n      const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n      const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n      for (let i = 0; i <= ii; i++) {\n        for (let j = 0; j <= jj; j++) {\n          tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n        }\n      }\n      return {\n        canvas: tmpCanvas2.canvas,\n        scaleX: dimx2.scale,\n        scaleY: dimy2.scale,\n        offsetX: x0,\n        offsetY: y0\n      };\n    }\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: x0,\n      offsetY: y0\n    };\n  }\n  getSizeAndScale(step, realOutputSize, scale) {\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n    return {\n      scale,\n      size\n    };\n  }\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n    graphics.clip();\n    graphics.endPath();\n  }\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const ctx = this.ctx;\n        context.fillStyle = ctx.fillStyle;\n        context.strokeStyle = ctx.strokeStyle;\n        current.fillColor = ctx.fillStyle;\n        current.strokeColor = ctx.strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n        context.fillStyle = cssColor;\n        context.strokeStyle = cssColor;\n        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    let matrix = inverse;\n    if (pathType !== PathType.SHADING) {\n      matrix = Util.transform(matrix, owner.baseTransform);\n      if (this.matrix) {\n        matrix = Util.transform(matrix, this.matrix);\n      }\n    }\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n    let domMatrix = new DOMMatrix(matrix);\n    domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n    return pattern;\n  }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n  return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false\n}) {\n  const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n    }\n  }\n  return {\n    srcPos,\n    destPos\n  };\n}\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height\n}) {\n  let i = 0;\n  const len = width * height * 3;\n  const len32 = len >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n  if (FeatureTest.isLittleEndian) {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n      dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n      dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n    }\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n      dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n      dest[destPos + 3] = s3 << 8 | 0xff;\n    }\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n    }\n  }\n  return {\n    srcPos: srcPos + len,\n    destPos\n  };\n}\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = src[i] * 0x10101 | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = src[i] * 0x1010100 | 0x000000ff;\n    }\n  }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n  ctx._removeMirroring = () => {\n    ctx.save = ctx.__originalSave;\n    ctx.restore = ctx.__originalRestore;\n    ctx.rotate = ctx.__originalRotate;\n    ctx.scale = ctx.__originalScale;\n    ctx.translate = ctx.__originalTranslate;\n    ctx.transform = ctx.__originalTransform;\n    ctx.setTransform = ctx.__originalSetTransform;\n    ctx.resetTransform = ctx.__originalResetTransform;\n    ctx.clip = ctx.__originalClip;\n    ctx.moveTo = ctx.__originalMoveTo;\n    ctx.lineTo = ctx.__originalLineTo;\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n    ctx.rect = ctx.__originalRect;\n    ctx.closePath = ctx.__originalClosePath;\n    ctx.beginPath = ctx.__originalBeginPath;\n    delete ctx._removeMirroring;\n  };\n  ctx.save = function ctxSave() {\n    destCtx.save();\n    this.__originalSave();\n  };\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\n  };\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n  };\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n  getCanvas(id, width, height) {\n    let canvasEntry;\n    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n    return canvasEntry;\n  }\n  delete(id) {\n    delete this.cache[id];\n  }\n  clear() {\n    for (const id in this.cache) {\n      const canvasEntry = this.cache[id];\n      this.canvasFactory.destroy(canvasEntry);\n      delete this.cache[id];\n    }\n  }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    const tlX = destX * a + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destY * d + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destX + destW) * a + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destY + destH) * d + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n    ctx.setTransform(a, b, c, d, tx, ty);\n    return [rWidth, rHeight];\n  }\n  if (a === 0 && d === 0) {\n    const tlX = destY * c + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destX * b + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destY + destH) * c + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destX + destW) * b + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n    ctx.setTransform(a, b, c, d, tx, ty);\n    return [rHeight, rWidth];\n  }\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n  const {\n    width,\n    height\n  } = imgData;\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n    return null;\n  }\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n  const width1 = width + 1;\n  let points = new Uint8Array(width1 * (height + 1));\n  let i, j, j0;\n  const lineSize = width + 7 & ~7;\n  let data = new Uint8Array(lineSize * height),\n    pos = 0;\n  for (const elem of imgData.data) {\n    let mask = 128;\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n  let count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const path = new Path2D();\n  for (i = 0; count && i <= height; i++) {\n    let p = i * width1;\n    const end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    path.moveTo(p % width1, i);\n    const p0 = p;\n    let type = points[p];\n    do {\n      const step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n      const pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        type = pp;\n        points[p] = 0;\n      } else {\n        type = pp & 0x33 * type >> 4;\n        points[p] &= type >> 2 | type << 2;\n      }\n      path.lineTo(p % width1, p / width1 | 0);\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n    --i;\n  }\n  data = null;\n  points = null;\n  const drawOutline = function (c) {\n    c.save();\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.fill(path);\n    c.beginPath();\n    c.restore();\n  };\n  return drawOutline;\n}\nclass CanvasExtraState {\n  constructor(width, height) {\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    this.x = 0;\n    this.y = 0;\n    this.lineX = 0;\n    this.lineY = 0;\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    this.patternStroke = false;\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = \"none\";\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n  updatePathMinMax(transform, x, y) {\n    [x, y] = Util.applyTransform([x, y], transform);\n    this.minX = Math.min(this.minX, x);\n    this.minY = Math.min(this.minY, y);\n    this.maxX = Math.max(this.maxX, x);\n    this.maxY = Math.max(this.maxY, y);\n  }\n  updateRectMinMax(transform, rect) {\n    const p1 = Util.applyTransform(rect, transform);\n    const p2 = Util.applyTransform(rect.slice(2), transform);\n    const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n    const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n    this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n    this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n    this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n    this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n  }\n  updateScalingPathMinMax(transform, minMax) {\n    Util.scaleMinMax(transform, minMax);\n    this.minX = Math.min(this.minX, minMax[0]);\n    this.minY = Math.min(this.minY, minMax[1]);\n    this.maxX = Math.max(this.maxX, minMax[2]);\n    this.maxY = Math.max(this.maxY, minMax[3]);\n  }\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n    if (minMax) {\n      return;\n    }\n    this.updateRectMinMax(transform, box);\n  }\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      const scale = Util.singularValueDecompose2dScale(transform);\n      const xStrokePad = scale[0] * this.lineWidth / 2;\n      const yStrokePad = scale[1] * this.lineWidth / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n    return box;\n  }\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n  isEmptyClip() {\n    return this.minX === Infinity;\n  }\n  startNewPathAndClipBox(box) {\n    this.clipBox = box;\n    this.minX = Infinity;\n    this.minY = Infinity;\n    this.maxX = 0;\n    this.maxY = 0;\n  }\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n  }\n}\nfunction putBinaryImageData(ctx, imgData) {\n  if (imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0,\n    destPos;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  let i, j, thisChunkHeight, elemsInThisChunk;\n  if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = width + 7 >> 3;\n    const white = 0xffffffff;\n    const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n      destPos = 0;\n      for (j = elemsInThisChunk; j--;) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n    ({\n      srcPos\n    } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0\n    }));\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n  for (const property of properties) {\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\nfunction resetCtxToDefault(ctx) {\n  ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n  if (!isNodeJS) {\n    const {\n      filter\n    } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n  }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  if (interpolate) {\n    return true;\n  }\n  const scale = Util.singularValueDecompose2dScale(transform);\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n  return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n  constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n    optionalContentConfig,\n    markedContentStack = null\n  }, annotationCanvasMap, pageColors) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this.groupStack = [];\n    this.processingType3 = null;\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = markedContentStack || [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n    this.pageColors = pageColors;\n    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n  }\n  getObject(data, fallback = null) {\n    if (typeof data === \"string\") {\n      return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n    }\n    return fallback;\n  }\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null\n  }) {\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n    const savedFillStyle = this.ctx.fillStyle;\n    this.ctx.fillStyle = background || \"#ffffff\";\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.fillStyle = savedFillStyle;\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\n    this.ctx.save();\n    resetCtxToDefault(this.ctx);\n    if (transform) {\n      this.ctx.transform(...transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n    this.ctx.transform(...viewport.transform);\n    this.viewportScale = viewport.scale;\n    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n  executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n    if (argsArrayLen === i) {\n      return i;\n    }\n    const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n      fnId = fnArray[i];\n      if (fnId !== OPS.dependency) {\n        this[fnId].apply(this, argsArray[i]);\n      } else {\n        for (const depObjId of argsArray[i]) {\n          const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n      i++;\n      if (i === argsArrayLen) {\n        return i;\n      }\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n    }\n  }\n  #restoreInitialState() {\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n    this.current.activeSMask = null;\n    this.ctx.restore();\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n  endDrawing() {\n    this.#restoreInitialState();\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n      if (hcmFilterId !== \"none\") {\n        const savedFilter = this.ctx.filter;\n        this.ctx.filter = hcmFilterId;\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\n        this.ctx.filter = savedFilter;\n      }\n    }\n  }\n  _scaleImage(img, inverseTransform) {\n    const width = img.width ?? img.displayWidth;\n    const height = img.height ?? img.displayHeight;\n    let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n    let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n    return {\n      img,\n      paintWidth,\n      paintHeight\n    };\n  }\n  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const {\n      width,\n      height\n    } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n      cache = this._cachedBitmapsMap.get(mainKey);\n      if (!cache) {\n        cache = new Map();\n        this._cachedBitmapsMap.set(mainKey, cache);\n      }\n      const cachedImage = cache.get(cacheKey);\n      if (cachedImage && !isPatternFill) {\n        const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n        const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY\n        };\n      }\n      scaled = cachedImage;\n    }\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n    let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n    const fillCtx = fillCanvas.context;\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n    if (!scaled) {\n      scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n    drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n    fillCtx.globalCompositeOperation = \"source-in\";\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n    fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n    fillCtx.fillRect(0, 0, width, height);\n    if (cache && !isPatternFill) {\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY)\n    };\n  }\n  setLineWidth(width) {\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking[0] = -1;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\n  }\n  setDash(dashArray, dashPhase) {\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n  setRenderingIntent(intent) {}\n  setFlatness(flatness) {}\n  setGState(states) {\n    for (const [key, value] of states) {\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(value);\n          break;\n        case \"LC\":\n          this.setLineCap(value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(value);\n          break;\n        case \"D\":\n          this.setDash(value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(value);\n          break;\n        case \"FL\":\n          this.setFlatness(value);\n          break;\n        case \"Font\":\n          this.setFont(value[0], value[1]);\n          break;\n        case \"CA\":\n          this.current.strokeAlpha = value;\n          break;\n        case \"ca\":\n          this.current.fillAlpha = value;\n          this.ctx.globalAlpha = value;\n          break;\n        case \"BM\":\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n  }\n  beginSMaskMode() {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n    this.suspendedCtx = this.ctx;\n    this.ctx = scratchCanvas.context;\n    const ctx = this.ctx;\n    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n  }\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n    this.suspendedCtx = null;\n  }\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\n    if (!dirtyBox) {\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n    } else {\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\n    }\n    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    this.ctx.save();\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n    this.ctx.restore();\n  }\n  composeSMask(ctx, smask, layerCtx, layerBox) {\n    const layerOffsetX = layerBox[0];\n    const layerOffsetY = layerBox[1];\n    const layerWidth = layerBox[2] - layerOffsetX;\n    const layerHeight = layerBox[3] - layerOffsetY;\n    if (layerWidth === 0 || layerHeight === 0) {\n      return;\n    }\n    this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n    ctx.save();\n    ctx.globalAlpha = 1;\n    ctx.globalCompositeOperation = \"source-over\";\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(layerCtx.canvas, 0, 0);\n    ctx.restore();\n  }\n  genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n    let maskCanvas = maskCtx.canvas;\n    let maskX = layerOffsetX - maskOffsetX;\n    let maskY = layerOffsetY - maskOffsetY;\n    if (backdrop) {\n      const backdropRGB = Util.makeHexColor(...backdrop);\n      if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n        const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n        const ctx = canvas.context;\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\n        ctx.globalCompositeOperation = \"destination-atop\";\n        ctx.fillStyle = backdropRGB;\n        ctx.fillRect(0, 0, width, height);\n        ctx.globalCompositeOperation = \"source-over\";\n        maskCanvas = canvas.canvas;\n        maskX = maskY = 0;\n      } else {\n        maskCtx.save();\n        maskCtx.globalAlpha = 1;\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n        const clip = new Path2D();\n        clip.rect(maskX, maskY, width, height);\n        maskCtx.clip(clip);\n        maskCtx.globalCompositeOperation = \"destination-atop\";\n        maskCtx.fillStyle = backdropRGB;\n        maskCtx.fillRect(maskX, maskY, width, height);\n        maskCtx.restore();\n      }\n    }\n    layerCtx.save();\n    layerCtx.globalAlpha = 1;\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n    if (subtype === \"Alpha\" && transferMap) {\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n    } else if (subtype === \"Luminosity\") {\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n    }\n    const clip = new Path2D();\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\n    layerCtx.clip(clip);\n    layerCtx.globalCompositeOperation = \"destination-in\";\n    layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n    layerCtx.restore();\n  }\n  save() {\n    if (this.inSMaskMode) {\n      copyCtxState(this.ctx, this.suspendedCtx);\n      this.suspendedCtx.save();\n    } else {\n      this.ctx.save();\n    }\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n  }\n  restore() {\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\n      this.endSMaskMode();\n    }\n    if (this.stateStack.length !== 0) {\n      this.current = this.stateStack.pop();\n      if (this.inSMaskMode) {\n        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n      this.checkSMaskState();\n      this.pendingClip = null;\n      this._cachedScaleForStroking[0] = -1;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n  constructPath(ops, args, minMax) {\n    const ctx = this.ctx;\n    const current = this.current;\n    let x = current.x,\n      y = current.y;\n    let startX, startY;\n    const currentTransform = getCurrentTransform(ctx);\n    const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n      switch (ops[i] | 0) {\n        case OPS.rectangle:\n          x = args[j++];\n          y = args[j++];\n          const width = args[j++];\n          const height = args[j++];\n          const xw = x + width;\n          const yh = y + height;\n          ctx.moveTo(x, y);\n          if (width === 0 || height === 0) {\n            ctx.lineTo(xw, yh);\n          } else {\n            ctx.lineTo(xw, y);\n            ctx.lineTo(xw, yh);\n            ctx.lineTo(x, yh);\n          }\n          if (!isScalingMatrix) {\n            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n          }\n          ctx.closePath();\n          break;\n        case OPS.moveTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.moveTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.lineTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.lineTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.curveTo:\n          startX = x;\n          startY = y;\n          x = args[j + 4];\n          y = args[j + 5];\n          ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n          j += 6;\n          break;\n        case OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n          x = args[j + 2];\n          y = args[j + 3];\n          j += 4;\n          break;\n        case OPS.curveTo3:\n          startX = x;\n          startY = y;\n          x = args[j + 2];\n          y = args[j + 3];\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n          j += 4;\n          break;\n        case OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n    if (isScalingMatrix) {\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n    }\n    current.setCurrentPoint(x, y);\n  }\n  closePath() {\n    this.ctx.closePath();\n  }\n  stroke(consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n        this.rescaleAndStroke(false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(true);\n      }\n    }\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n  closeStroke() {\n    this.closePath();\n    this.stroke();\n  }\n  fill(consumePath = true) {\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n      needRestore = true;\n    }\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(\"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n    }\n    if (needRestore) {\n      ctx.restore();\n    }\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n    this.consumePath();\n  }\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n  endPath() {\n    this.consumePath();\n  }\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\n  beginText() {\n    this.current.textMatrix = IDENTITY_MATRIX;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n    const newPath = new Path2D();\n    const invTransf = ctx.getTransform().invertSelf();\n    for (const {\n      transform,\n      x,\n      y,\n      fontSize,\n      path\n    } of paths) {\n      newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n    }\n    ctx.clip(newPath);\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n    if (fontObj.isType3Font) {\n      return;\n    }\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n    let bold = \"normal\";\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n    let browserFontSize = size;\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n    this.current.fontSizeScale = size / browserFontSize;\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\n  }\n  setTextMatrix(a, b, c, d, e, f) {\n    this.current.textMatrix = [a, b, c, d, e, f];\n    this.current.textMatrixScale = Math.hypot(a, b);\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n  #getScaledPath(path, currentTransform, transform) {\n    const newPath = new Path2D();\n    newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n    return newPath;\n  }\n  paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const textRenderingMode = current.textRenderingMode;\n    const fontSize = current.fontSize / current.fontSizeScale;\n    const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n    const patternFill = current.patternFill && !font.missingFile;\n    const patternStroke = current.patternStroke && !font.missingFile;\n    let path;\n    if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n      path = font.getPathGenerator(this.commonObjs, character);\n    }\n    if (font.disableFontFace || patternFill || patternStroke) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.scale(fontSize, -fontSize);\n      let currentTransform;\n      if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        if (patternFillTransform) {\n          currentTransform = ctx.getTransform();\n          ctx.setTransform(...patternFillTransform);\n          ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n        } else {\n          ctx.fill(path);\n        }\n      }\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        if (patternStrokeTransform) {\n          currentTransform ||= ctx.getTransform();\n          ctx.setTransform(...patternStrokeTransform);\n          const {\n            a,\n            b,\n            c,\n            d\n          } = currentTransform;\n          const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n          const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n          const [sx, sy] = Util.singularValueDecompose2dScale(transf);\n          ctx.lineWidth *= Math.max(sx, sy) / fontSize;\n          ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n        } else {\n          ctx.lineWidth /= fontSize;\n          ctx.stroke(path);\n        }\n      }\n      ctx.restore();\n    } else {\n      if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.fillText(character, x, y);\n      }\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n    if (isAddToPathSet) {\n      const paths = this.pendingTextPaths ||= [];\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        path\n      });\n    }\n  }\n  get isFontSubpixelAAEnabled() {\n    const {\n      context: ctx\n    } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n    return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      return undefined;\n    }\n    const ctx = this.ctx;\n    const fontSizeScale = current.fontSizeScale;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const fontDirection = current.fontDirection;\n    const textHScale = current.textHScale * fontDirection;\n    const glyphsLength = glyphs.length;\n    const vertical = font.vertical;\n    const spacingDir = vertical ? 1 : -1;\n    const defaultVMetrics = font.defaultVMetrics;\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\n    const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n    let patternFillTransform, patternStrokeTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n      patternFillTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n    if (current.patternStroke) {\n      ctx.save();\n      const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n      patternStrokeTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.strokeStyle = pattern;\n    }\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n    ctx.lineWidth = lineWidth;\n    if (font.isInvalidPDFjsFont) {\n      const chars = [];\n      let width = 0;\n      for (const glyph of glyphs) {\n        chars.push(glyph.unicode);\n        width += glyph.width;\n      }\n      ctx.fillText(chars.join(\"\"), 0, 0);\n      current.x += width * widthAdvanceScale * textHScale;\n      ctx.restore();\n      this.compose();\n      return undefined;\n    }\n    let x = 0,\n      i;\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        x += spacingDir * glyph * fontSize / 1000;\n        continue;\n      }\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n      if (font.remeasure && width > 0) {\n        const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n        }\n      }\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n          if (accent) {\n            const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n            const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n          }\n        }\n      }\n      const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n    ctx.restore();\n    this.compose();\n    return undefined;\n  }\n  showType3Text(glyphs) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n    ctx.scale(textHScale, fontDirection);\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        spacingLength = spacingDir * glyph * fontSize / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n      if (!operatorList) {\n        warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n        continue;\n      }\n      if (this.contentVisible) {\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n      width = transformed[0] * fontSize + spacing;\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    this.processingType3 = null;\n  }\n  setCharWidth(xWidth, yWidth) {}\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip();\n    this.endPath();\n  }\n  getColorN_Pattern(IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const color = IR[1];\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n          optionalContentConfig: this.optionalContentConfig,\n          markedContentStack: this.markedContentStack\n        })\n      };\n      pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n    return pattern;\n  }\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n    this.current.patternStroke = true;\n  }\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n  setStrokeRGBColor(r, g, b) {\n    this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n    this.current.patternStroke = false;\n  }\n  setStrokeTransparent() {\n    this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n    this.current.patternStroke = false;\n  }\n  setFillRGBColor(r, g, b) {\n    this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n    this.current.patternFill = false;\n  }\n  setFillTransparent() {\n    this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n    this.current.patternFill = false;\n  }\n  _getPattern(objId, matrix = null) {\n    let pattern;\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = getShadingPattern(this.getObject(objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    this.save();\n    const pattern = this._getPattern(objId);\n    ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const {\n        width,\n        height\n      } = ctx.canvas;\n      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n    if (matrix) {\n      this.transform(...matrix);\n    }\n    this.baseTransform = getCurrentTransform(this.ctx);\n    if (bbox) {\n      const width = bbox[2] - bbox[0];\n      const height = bbox[3] - bbox[1];\n      this.ctx.rect(bbox[0], bbox[1], width, height);\n      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n      this.clip();\n      this.endPath();\n    }\n  }\n  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n    const currentCtx = this.ctx;\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\n    const currentTransform = getCurrentTransform(currentCtx);\n    if (group.matrix) {\n      currentCtx.transform(...group.matrix);\n    }\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n    let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n    const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n    const groupCtx = scratchCanvas.context;\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n    if (group.smask) {\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null\n      });\n    } else {\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.save();\n    }\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n  endGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    this.ctx.imageSmoothingEnabled = false;\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore();\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore();\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n    this.ctx.save();\n    this.save();\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n    if (rect) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n        const {\n          viewportScale\n        } = this;\n        const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n        const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n        this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n        const {\n          canvas,\n          context\n        } = this.annotationCanvas;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.save();\n        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n        this.endPath();\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.ctx.clip();\n        this.ctx.beginPath();\n      }\n    }\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.transform(...transform);\n    this.transform(...matrix);\n  }\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n  paintImageMaskXObject(img) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const count = img.count;\n    img = this.getObject(img.data, img);\n    img.count = count;\n    const ctx = this.ctx;\n    const glyph = this.processingType3;\n    if (glyph) {\n      if (glyph.compiled === undefined) {\n        glyph.compiled = compileType3Glyph(img);\n      }\n      if (glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n    }\n    const mask = this._createMaskCanvas(img);\n    const maskCanvas = mask.canvas;\n    ctx.save();\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    ctx.restore();\n    this.compose();\n  }\n  paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    img = this.getObject(img.data, img);\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = getCurrentTransform(ctx);\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n    const mask = this._createMaskCanvas(img);\n    ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n      const [x, y] = Util.applyTransform([0, 0], trans);\n      ctx.drawImage(mask.canvas, x, y);\n    }\n    ctx.restore();\n    this.compose();\n  }\n  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    for (const image of images) {\n      const {\n        data,\n        width,\n        height,\n        transform\n      } = image;\n      const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n      const img = this.getObject(data, image);\n      putBinaryImageMask(maskCtx, img);\n      maskCtx.globalCompositeOperation = \"source-in\";\n      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n      maskCtx.restore();\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n      ctx.restore();\n    }\n    this.compose();\n  }\n  paintImageXObject(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n    this.paintInlineImageXObject(imgData);\n  }\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const map = [];\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height\n      });\n    }\n    this.paintInlineImageXObjectGroup(imgData, map);\n  }\n  applyTransferMapsToCanvas(ctx) {\n    if (this.current.transferMaps !== \"none\") {\n      ctx.filter = this.current.transferMaps;\n      ctx.drawImage(ctx.canvas, 0, 0);\n      ctx.filter = \"none\";\n    }\n    return ctx.canvas;\n  }\n  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const {\n      bitmap,\n      width,\n      height\n    } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n    return tmpCanvas.canvas;\n  }\n  paintInlineImageXObject(imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n    this.save();\n    if (!isNodeJS) {\n      const {\n        filter\n      } = ctx;\n      if (filter !== \"none\" && filter !== \"\") {\n        ctx.filter = \"none\";\n      }\n    }\n    ctx.scale(1 / width, -1 / height);\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n    const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n    drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n    this.compose();\n    this.restore();\n  }\n  paintInlineImageXObjectGroup(imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = imgData.bitmap;\n    } else {\n      const w = imgData.width;\n      const h = imgData.height;\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n      ctx.restore();\n    }\n    this.compose();\n  }\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n  markPoint(tag) {}\n  markPointProps(tag, properties) {}\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true\n    });\n  }\n  beginMarkedContentProps(tag, properties) {\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties)\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true\n      });\n    }\n    this.contentVisible = this.isContentVisible();\n  }\n  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n  beginCompat() {}\n  endCompat() {}\n  consumePath(clipBox) {\n    const isEmpty = this.current.isEmptyClip();\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n    const ctx = this.ctx;\n    if (this.pendingClip) {\n      if (!isEmpty) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip(\"evenodd\");\n        } else {\n          ctx.clip();\n        }\n      }\n      this.pendingClip = null;\n    }\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n    ctx.beginPath();\n  }\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n    return this._cachedGetSinglePixelWidth;\n  }\n  getScaleForStroking() {\n    if (this._cachedScaleForStroking[0] === -1) {\n      const {\n        lineWidth\n      } = this.current;\n      const {\n        a,\n        b,\n        c,\n        d\n      } = this.ctx.getTransform();\n      let scaleX, scaleY;\n      if (b === 0 && c === 0) {\n        const normX = Math.abs(a);\n        const normY = Math.abs(d);\n        if (normX === normY) {\n          if (lineWidth === 0) {\n            scaleX = scaleY = 1 / normX;\n          } else {\n            const scaledLineWidth = normX * lineWidth;\n            scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n          }\n        } else if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        const absDet = Math.abs(a * d - b * c);\n        const normX = Math.hypot(a, b);\n        const normY = Math.hypot(c, d);\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n      this._cachedScaleForStroking[0] = scaleX;\n      this._cachedScaleForStroking[1] = scaleY;\n    }\n    return this._cachedScaleForStroking;\n  }\n  rescaleAndStroke(saveRestore) {\n    const {\n      ctx\n    } = this;\n    const {\n      lineWidth\n    } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n    ctx.lineWidth = lineWidth || 1;\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n    ctx.scale(scaleX, scaleY);\n    if (dashes.length > 0) {\n      const scale = Math.max(scaleX, scaleY);\n      ctx.setLineDash(dashes.map(x => x / scale));\n      ctx.lineDashOffset /= scale;\n    }\n    ctx.stroke();\n    if (saveRestore) {\n      ctx.restore();\n    }\n  }\n  isContentVisible() {\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n      if (!this.markedContentStack[i].visible) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n  static #port = null;\n  static #src = \"\";\n  static get workerPort() {\n    return this.#port;\n  }\n  static set workerPort(val) {\n    if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n      throw new Error(\"Invalid `workerPort` type.\");\n    }\n    this.#port = val;\n  }\n  static get workerSrc() {\n    return this.#src;\n  }\n  static set workerSrc(val) {\n    if (typeof val !== \"string\") {\n      throw new Error(\"Invalid `workerSrc` type.\");\n    }\n    this.#src = val;\n  }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n  #metadataMap;\n  #data;\n  constructor({\n    parsedData,\n    rawData\n  }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n  getRaw() {\n    return this.#data;\n  }\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n  getAll() {\n    return objectFromMap(this.#metadataMap);\n  }\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n  #isDisplay = false;\n  #isPrint = false;\n  #userSet = false;\n  #visible = true;\n  constructor(renderingIntent, {\n    name,\n    intent,\n    usage,\n    rbGroups\n  }) {\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n    this.name = name;\n    this.intent = intent;\n    this.usage = usage;\n    this.rbGroups = rbGroups;\n  }\n  get visible() {\n    if (this.#userSet) {\n      return this.#visible;\n    }\n    if (!this.#visible) {\n      return false;\n    }\n    const {\n      print,\n      view\n    } = this.usage;\n    if (this.#isDisplay) {\n      return view?.viewState !== \"OFF\";\n    } else if (this.#isPrint) {\n      return print?.printState !== \"OFF\";\n    }\n    return true;\n  }\n  _setVisible(internal, visible, userSet = false) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#userSet = userSet;\n    this.#visible = visible;\n  }\n}\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n  #groups = new Map();\n  #initialHash = null;\n  #order = null;\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n    this.renderingIntent = renderingIntent;\n    this.name = null;\n    this.creator = null;\n    if (data === null) {\n      return;\n    }\n    this.name = data.name;\n    this.creator = data.creator;\n    this.#order = data.order;\n    for (const group of data.groups) {\n      this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n    }\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n    this.#initialHash = this.getHash();\n  }\n  #evaluateVisibilityExpression(array) {\n    const length = array.length;\n    if (length < 2) {\n      return true;\n    }\n    const operator = array[0];\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n      if (Array.isArray(element)) {\n        state = this.#evaluateVisibilityExpression(element);\n      } else if (this.#groups.has(element)) {\n        state = this.#groups.get(element).visible;\n      } else {\n        warn(`Optional content group not found: ${element}`);\n        return true;\n      }\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n          break;\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n          break;\n        case \"Not\":\n          return !state;\n        default:\n          return true;\n      }\n    }\n    return operator === \"And\";\n  }\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      info(\"Optional content group not defined.\");\n      return true;\n    }\n    if (group.type === \"OCG\") {\n      if (!this.#groups.has(group.id)) {\n        warn(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n      return this.#groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      }\n      warn(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n    warn(`Unknown group type ${group.type}.`);\n    return true;\n  }\n  setVisibility(id, visible = true, preserveRB = true) {\n    const group = this.#groups.get(id);\n    if (!group) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n    if (preserveRB && visible && group.rbGroups.length) {\n      for (const rbGroup of group.rbGroups) {\n        for (const otherId of rbGroup) {\n          if (otherId !== id) {\n            this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n          }\n        }\n      }\n    }\n    group._setVisible(INTERNAL, !!visible, true);\n    this.#cachedGetHash = null;\n  }\n  setOCGState({\n    state,\n    preserveRB\n  }) {\n    let operator;\n    for (const elem of state) {\n      switch (elem) {\n        case \"ON\":\n        case \"OFF\":\n        case \"Toggle\":\n          operator = elem;\n          continue;\n      }\n      const group = this.#groups.get(elem);\n      if (!group) {\n        continue;\n      }\n      switch (operator) {\n        case \"ON\":\n          this.setVisibility(elem, true, preserveRB);\n          break;\n        case \"OFF\":\n          this.setVisibility(elem, false, preserveRB);\n          break;\n        case \"Toggle\":\n          this.setVisibility(elem, !group.visible, preserveRB);\n          break;\n      }\n    }\n    this.#cachedGetHash = null;\n  }\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\n  }\n  getOrder() {\n    if (!this.#groups.size) {\n      return null;\n    }\n    if (this.#order) {\n      return this.#order.slice();\n    }\n    return [...this.#groups.keys()];\n  }\n  getGroups() {\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n  }\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return this.#cachedGetHash = hash.hexdigest();\n  }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n  constructor(pdfDataRangeTransport, {\n    disableRange = false,\n    disableStream = false\n  }) {\n    assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n    const {\n      length,\n      initialData,\n      progressiveDone,\n      contentDispositionFilename\n    } = pdfDataRangeTransport;\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n    if (initialData?.length > 0) {\n      const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({\n        begin,\n        chunk\n      });\n    });\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({\n        loaded,\n        total\n      });\n    });\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({\n        chunk\n      });\n    });\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n    pdfDataRangeTransport.transportReady();\n  }\n  _onReceiveData({\n    begin,\n    chunk\n  }) {\n    const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n    if (begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== begin) {\n          return false;\n        }\n        rangeReader._enqueue(buffer);\n        return true;\n      });\n      assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n    }\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      this._rangeReaders[0]?.onProgress?.({\n        loaded: evt.loaded\n      });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total\n      });\n    }\n  }\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n  }\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n    this._rangeReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\nclass PDFDataTransportStreamReader {\n  constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n    this.onProgress = null;\n  }\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n  get headersReady() {\n    return this._headersReady;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n  }\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n    this.onProgress = null;\n  }\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({\n        value: chunk,\n        done: false\n      });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({\n          value: undefined,\n          done: true\n        });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n  get isStreamingSupported() {\n    return false;\n  }\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {}\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match;\n      n = parseInt(n, 10);\n      if (n in matches) {\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    const parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        break;\n      }\n      let [quot, part] = matches[n];\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join(\"\");\n  }\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1;\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n      if (encoding === \"q\" || encoding === \"Q\") {\n        text = text.replaceAll(\"_\", \" \");\n        text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n          return String.fromCharCode(parseInt(hex, 16));\n        });\n        return textdecode(charset, text);\n      }\n      try {\n        text = atob(text);\n      } catch {}\n      return textdecode(charset, text);\n    });\n  }\n  return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n  const headers = new Headers();\n  if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n    return headers;\n  }\n  for (const key in httpHeaders) {\n    const val = httpHeaders[key];\n    if (val !== undefined) {\n      headers.append(key, val);\n    }\n  }\n  return headers;\n}\nfunction getResponseOrigin(url) {\n  return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n  responseHeaders,\n  isHttp,\n  rangeChunkSize,\n  disableRange\n}) {\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined\n  };\n  const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n  returnValues.suggestedLength = length;\n  if (length <= 2 * rangeChunkSize) {\n    return returnValues;\n  }\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n  const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n  const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch {}\n    }\n    if (isPdfFile(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\nfunction createResponseError(status, url) {\n  return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: \"GET\",\n    headers,\n    signal: abortController.signal,\n    mode: \"cors\",\n    credentials: withCredentials ? \"include\" : \"same-origin\",\n    redirect: \"follow\"\n  };\n}\nfunction getArrayBuffer(val) {\n  if (val instanceof Uint8Array) {\n    return val.buffer;\n  }\n  if (val instanceof ArrayBuffer) {\n    return val;\n  }\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\n  return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n  _responseOrigin = null;\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    const headers = new Headers(stream.headers);\n    const url = source.url;\n    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n      stream._responseOrigin = getResponseOrigin(response.url);\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseError(response.status, url);\n      }\n      this._reader = response.body.getReader();\n      this._headersCapability.resolve();\n      const responseHeaders = response.headers;\n      const {\n        allowRangeRequests,\n        suggestedLength\n      } = validateRangeRequestCapabilities({\n        responseHeaders,\n        isHttp: stream.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange\n      });\n      this._isRangeSupported = allowRangeRequests;\n      this._contentLength = suggestedLength || this._contentLength;\n      this._filename = extractFilenameFromHeader(responseHeaders);\n      if (!this._isStreamingSupported && this._isRangeSupported) {\n        this.cancel(new AbortException(\"Streaming is disabled.\"));\n      }\n    }).catch(this._headersCapability.reject);\n    this.onProgress = null;\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._headersCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength\n    });\n    return {\n      value: getArrayBuffer(value),\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = Promise.withResolvers();\n    this._isStreamingSupported = !source.disableStream;\n    this._abortController = new AbortController();\n    const headers = new Headers(stream.headers);\n    headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n    const url = source.url;\n    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n      const responseOrigin = getResponseOrigin(response.url);\n      if (responseOrigin !== stream._responseOrigin) {\n        throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n      }\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseError(response.status, url);\n      }\n      this._readCapability.resolve();\n      this._reader = response.body.getReader();\n    }).catch(this._readCapability.reject);\n    this.onProgress = null;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded\n    });\n    return {\n      value: getArrayBuffer(value),\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n  _responseOrigin = null;\n  constructor({\n    url,\n    httpHeaders,\n    withCredentials\n  }) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.headers = createHeaders(this.isHttp, httpHeaders);\n    this.withCredentials = withCredentials || false;\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = this.pendingRequests[xhrId] = {\n      xhr\n    };\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const [key, val] of this.headers) {\n      xhr.setRequestHeader(key, val);\n    }\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n    xhr.responseType = \"arraybuffer\";\n    assert(args.onError, \"Expected `onError` callback to be provided.\");\n    xhr.onerror = () => {\n      args.onError(xhr.status);\n    };\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n    xhr.send(null);\n    return xhrId;\n  }\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n    if (xhr.readyState !== 4) {\n      return;\n    }\n    if (!(xhrId in this.pendingRequests)) {\n      return;\n    }\n    delete this.pendingRequests[xhrId];\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n    const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n    if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n    const chunk = network_getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      if (matches) {\n        pendingRequest.onDone({\n          begin: parseInt(matches[1], 10),\n          chunk\n        });\n      } else {\n        warn(`Missing or invalid \"Content-Range\" header.`);\n        pendingRequest.onError(0);\n      }\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk\n      });\n    } else {\n      pendingRequest.onError(xhr.status);\n    }\n  }\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source);\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n    return this._fullRequestReader;\n  }\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n    this._url = source.url;\n    this._fullRequestId = manager.request({\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this)\n    });\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n    this.onProgress = null;\n  }\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n    this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n    const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n    const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n      const [key, ...val] = x.split(\": \");\n      return [key, val.join(\": \")];\n    }) : []);\n    const {\n      allowRangeRequests,\n      suggestedLength\n    } = validateRangeRequestCapabilities({\n      responseHeaders,\n      isHttp: this._manager.isHttp,\n      rangeChunkSize: this._rangeChunkSize,\n      disableRange: this._disableRange\n    });\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    this._contentLength = suggestedLength || this._contentLength;\n    this._filename = extractFilenameFromHeader(responseHeaders);\n    if (this._isRangeSupported) {\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n    this._headersCapability.resolve();\n  }\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({\n          value: data.chunk,\n          done: false\n        });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n  }\n  _onError(status) {\n    this._storedError = createResponseError(status, this._url);\n    this._headersCapability.reject(this._storedError);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength\n    });\n  }\n  get filename() {\n    return this._filename;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  async read() {\n    await this._headersCapability.promise;\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    this._headersCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n}\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n    this._url = manager.url;\n    this._requestId = manager.request({\n      begin,\n      end,\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this)\n    });\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n  _onHeadersReceived() {\n    const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n    if (responseOrigin !== this._manager._responseOrigin) {\n      this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n      this._onError(0);\n    }\n  }\n  _close() {\n    this.onClosed?.(this);\n  }\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n  _onError(status) {\n    this._storedError ??= createResponseError(status, this._url);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({\n        loaded: evt.loaded\n      });\n    }\n  }\n  get isStreamingSupported() {\n    return false;\n  }\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n}\n\n;// ./src/display/node_stream.js\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n  if (urlRegex.test(sourceUrl)) {\n    return new URL(sourceUrl);\n  }\n  const url = process.getBuiltinModule(\"url\");\n  return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrlOrPath(source.url);\n    assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n    return this._fullRequestReader;\n  }\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFNodeStreamFsFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length;\n    this._loaded = 0;\n    this._filename = null;\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    this._headersCapability = Promise.withResolvers();\n    const fs = process.getBuiltinModule(\"fs\");\n    fs.promises.lstat(this._url).then(stat => {\n      this._contentLength = stat.size;\n      this._setReadableStream(fs.createReadStream(this._url));\n      this._headersCapability.resolve();\n    }, error => {\n      if (error.code === \"ENOENT\") {\n        error = createResponseError(0, this._url.href);\n      }\n      this._storedError = error;\n      this._headersCapability.reject(error);\n    });\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength\n    });\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\nclass PDFNodeStreamFsRangeReader {\n  constructor(stream, start, end) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n    const fs = process.getBuiltinModule(\"fs\");\n    this._setReadableStream(fs.createReadStream(this._url, {\n      start,\n      end: end - 1\n    }));\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded\n    });\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n  #capability = Promise.withResolvers();\n  #container = null;\n  #disableProcessItems = false;\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n  #lang = null;\n  #layoutTextParams = null;\n  #pageHeight = 0;\n  #pageWidth = 0;\n  #reader = null;\n  #rootContainer = null;\n  #rotation = 0;\n  #scale = 0;\n  #styleCache = Object.create(null);\n  #textContentItemsStr = [];\n  #textContentSource = null;\n  #textDivs = [];\n  #textDivProperties = new WeakMap();\n  #transform = null;\n  static #ascentCache = new Map();\n  static #canvasContexts = new Map();\n  static #canvasCtxFonts = new WeakMap();\n  static #minFontSize = null;\n  static #pendingTextLayers = new Set();\n  constructor({\n    textContentSource,\n    container,\n    viewport\n  }) {\n    if (textContentSource instanceof ReadableStream) {\n      this.#textContentSource = textContentSource;\n    } else if (typeof textContentSource === \"object\") {\n      this.#textContentSource = new ReadableStream({\n        start(controller) {\n          controller.enqueue(textContentSource);\n          controller.close();\n        }\n      });\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n    this.#container = this.#rootContainer = container;\n    this.#scale = viewport.scale * OutputScale.pixelRatio;\n    this.#rotation = viewport.rotation;\n    this.#layoutTextParams = {\n      div: null,\n      properties: null,\n      ctx: null\n    };\n    const {\n      pageWidth,\n      pageHeight,\n      pageX,\n      pageY\n    } = viewport.rawDims;\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this.#pageWidth = pageWidth;\n    this.#pageHeight = pageHeight;\n    TextLayer.#ensureMinFontSizeComputed();\n    setLayerDimensions(container, viewport);\n    this.#capability.promise.finally(() => {\n      TextLayer.#pendingTextLayers.delete(this);\n      this.#layoutTextParams = null;\n      this.#styleCache = null;\n    }).catch(() => {});\n  }\n  static get fontFamilyMap() {\n    const {\n      isWindows,\n      isFirefox\n    } = util_FeatureTest.platform;\n    return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n  }\n  render() {\n    const pump = () => {\n      this.#reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          this.#capability.resolve();\n          return;\n        }\n        this.#lang ??= value.lang;\n        Object.assign(this.#styleCache, value.styles);\n        this.#processItems(value.items);\n        pump();\n      }, this.#capability.reject);\n    };\n    this.#reader = this.#textContentSource.getReader();\n    TextLayer.#pendingTextLayers.add(this);\n    pump();\n    return this.#capability.promise;\n  }\n  update({\n    viewport,\n    onBefore = null\n  }) {\n    const scale = viewport.scale * OutputScale.pixelRatio;\n    const rotation = viewport.rotation;\n    if (rotation !== this.#rotation) {\n      onBefore?.();\n      this.#rotation = rotation;\n      setLayerDimensions(this.#rootContainer, {\n        rotation\n      });\n    }\n    if (scale !== this.#scale) {\n      onBefore?.();\n      this.#scale = scale;\n      const params = {\n        div: null,\n        properties: null,\n        ctx: TextLayer.#getCtx(this.#lang)\n      };\n      for (const div of this.#textDivs) {\n        params.properties = this.#textDivProperties.get(div);\n        params.div = div;\n        this.#layout(params);\n      }\n    }\n  }\n  cancel() {\n    const abortEx = new AbortException(\"TextLayer task cancelled.\");\n    this.#reader?.cancel(abortEx).catch(() => {});\n    this.#reader = null;\n    this.#capability.reject(abortEx);\n  }\n  get textDivs() {\n    return this.#textDivs;\n  }\n  get textContentItemsStr() {\n    return this.#textContentItemsStr;\n  }\n  #processItems(items) {\n    if (this.#disableProcessItems) {\n      return;\n    }\n    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n    const textDivs = this.#textDivs,\n      textContentItemsStr = this.#textContentItemsStr;\n    for (const item of items) {\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n        warn(\"Ignoring additional textDivs for performance reasons.\");\n        this.#disableProcessItems = true;\n        return;\n      }\n      if (item.str === undefined) {\n        if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n          const parent = this.#container;\n          this.#container = document.createElement(\"span\");\n          this.#container.classList.add(\"markedContent\");\n          if (item.id !== null) {\n            this.#container.setAttribute(\"id\", `${item.id}`);\n          }\n          parent.append(this.#container);\n        } else if (item.type === \"endMarkedContent\") {\n          this.#container = this.#container.parentNode;\n        }\n        continue;\n      }\n      textContentItemsStr.push(item.str);\n      this.#appendText(item);\n    }\n  }\n  #appendText(geom) {\n    const textDiv = document.createElement(\"span\");\n    const textDivProperties = {\n      angle: 0,\n      canvasWidth: 0,\n      hasText: geom.str !== \"\",\n      hasEOL: geom.hasEOL,\n      fontSize: 0\n    };\n    this.#textDivs.push(textDiv);\n    const tx = Util.transform(this.#transform, geom.transform);\n    let angle = Math.atan2(tx[1], tx[0]);\n    const style = this.#styleCache[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n    let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n    const fontHeight = Math.hypot(tx[2], tx[3]);\n    const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n    let left, top;\n    if (angle === 0) {\n      left = tx[4];\n      top = tx[5] - fontAscent;\n    } else {\n      left = tx[4] + fontAscent * Math.sin(angle);\n      top = tx[5] - fontAscent * Math.cos(angle);\n    }\n    const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n    const divStyle = textDiv.style;\n    if (this.#container === this.#rootContainer) {\n      divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n      divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n    } else {\n      divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n      divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n    }\n    divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n    divStyle.fontFamily = fontFamily;\n    textDivProperties.fontSize = fontHeight;\n    textDiv.setAttribute(\"role\", \"presentation\");\n    textDiv.textContent = geom.str;\n    textDiv.dir = geom.dir;\n    if (this.#fontInspectorEnabled) {\n      textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\n    let shouldScaleText = false;\n    if (geom.str.length > 1) {\n      shouldScaleText = true;\n    } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n      const absScaleX = Math.abs(geom.transform[0]),\n        absScaleY = Math.abs(geom.transform[3]);\n      if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n        shouldScaleText = true;\n      }\n    }\n    if (shouldScaleText) {\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n    }\n    this.#textDivProperties.set(textDiv, textDivProperties);\n    this.#layoutTextParams.div = textDiv;\n    this.#layoutTextParams.properties = textDivProperties;\n    this.#layout(this.#layoutTextParams);\n    if (textDivProperties.hasText) {\n      this.#container.append(textDiv);\n    }\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n      this.#container.append(br);\n    }\n  }\n  #layout(params) {\n    const {\n      div,\n      properties,\n      ctx\n    } = params;\n    const {\n      style\n    } = div;\n    let transform = \"\";\n    if (TextLayer.#minFontSize > 1) {\n      transform = `scale(${1 / TextLayer.#minFontSize})`;\n    }\n    if (properties.canvasWidth !== 0 && properties.hasText) {\n      const {\n        fontFamily\n      } = style;\n      const {\n        canvasWidth,\n        fontSize\n      } = properties;\n      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n      const {\n        width\n      } = ctx.measureText(div.textContent);\n      if (width > 0) {\n        transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n      }\n    }\n    if (properties.angle !== 0) {\n      transform = `rotate(${properties.angle}deg) ${transform}`;\n    }\n    if (transform.length > 0) {\n      style.transform = transform;\n    }\n  }\n  static cleanup() {\n    if (this.#pendingTextLayers.size > 0) {\n      return;\n    }\n    this.#ascentCache.clear();\n    for (const {\n      canvas\n    } of this.#canvasContexts.values()) {\n      canvas.remove();\n    }\n    this.#canvasContexts.clear();\n  }\n  static #getCtx(lang = null) {\n    let ctx = this.#canvasContexts.get(lang ||= \"\");\n    if (!ctx) {\n      const canvas = document.createElement(\"canvas\");\n      canvas.className = \"hiddenCanvasElement\";\n      canvas.lang = lang;\n      document.body.append(canvas);\n      ctx = canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: true\n      });\n      this.#canvasContexts.set(lang, ctx);\n      this.#canvasCtxFonts.set(ctx, {\n        size: 0,\n        family: \"\"\n      });\n    }\n    return ctx;\n  }\n  static #ensureCtxFont(ctx, size, family) {\n    const cached = this.#canvasCtxFonts.get(ctx);\n    if (size === cached.size && family === cached.family) {\n      return;\n    }\n    ctx.font = `${size}px ${family}`;\n    cached.size = size;\n    cached.family = family;\n  }\n  static #ensureMinFontSizeComputed() {\n    if (this.#minFontSize !== null) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.style.opacity = 0;\n    div.style.lineHeight = 1;\n    div.style.fontSize = \"1px\";\n    div.style.position = \"absolute\";\n    div.textContent = \"X\";\n    document.body.append(div);\n    this.#minFontSize = div.getBoundingClientRect().height;\n    div.remove();\n  }\n  static #getAscent(fontFamily, style, lang) {\n    const cachedAscent = this.#ascentCache.get(fontFamily);\n    if (cachedAscent) {\n      return cachedAscent;\n    }\n    const ctx = this.#getCtx(lang);\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n    const metrics = ctx.measureText(\"\");\n    const ascent = metrics.fontBoundingBoxAscent;\n    const descent = Math.abs(metrics.fontBoundingBoxDescent);\n    ctx.canvas.width = ctx.canvas.height = 0;\n    let ratio = 0.8;\n    if (ascent) {\n      ratio = ascent / (ascent + descent);\n    } else {\n      if (util_FeatureTest.platform.isFirefox) {\n        warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n      }\n      if (style.ascent) {\n        ratio = style.ascent;\n      } else if (style.descent) {\n        ratio = 1 + style.descent;\n      }\n    }\n    this.#ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null)\n    };\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n      let str = null;\n      const name = node.name;\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n      if (str !== null) {\n        items.push({\n          str\n        });\n      }\n      if (!node.children) {\n        return;\n      }\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n    walk(xfa);\n    return output;\n  }\n  static shouldBuildText(name) {\n    return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n  }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n  if (typeof src === \"string\" || src instanceof URL) {\n    src = {\n      url: src\n    };\n  } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n    src = {\n      data: src\n    };\n  }\n  const task = new PDFDocumentLoadingTask();\n  const {\n    docId\n  } = task;\n  const url = src.url ? getUrlProp(src.url) : null;\n  const data = src.data ? getDataProp(src.data) : null;\n  const httpHeaders = src.httpHeaders || null;\n  const withCredentials = src.withCredentials === true;\n  const password = src.password ?? null;\n  const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n  const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n  const cMapPacked = src.cMapPacked !== false;\n  const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n  const iccUrl = getFactoryUrlProp(src.iccUrl);\n  const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n  const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n  const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n  const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n  const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n  const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n  const fontExtraProperties = src.fontExtraProperties === true;\n  const enableXfa = src.enableXfa === true;\n  const ownerDocument = src.ownerDocument || globalThis.document;\n  const disableRange = src.disableRange === true;\n  const disableStream = src.disableStream === true;\n  const disableAutoFetch = src.disableAutoFetch === true;\n  const pdfBug = src.pdfBug === true;\n  const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n  const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n  const enableHWA = src.enableHWA === true;\n  const useWasm = src.useWasm !== false;\n  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n  const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n  const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n  const styleElement = null;\n  setVerbosityLevel(verbosity);\n  const transportFactory = {\n    canvasFactory: new CanvasFactory({\n      ownerDocument,\n      enableHWA\n    }),\n    filterFactory: new FilterFactory({\n      docId,\n      ownerDocument\n    }),\n    cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n      baseUrl: cMapUrl,\n      isCompressed: cMapPacked\n    }),\n    standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n      baseUrl: standardFontDataUrl\n    }),\n    wasmFactory: useWorkerFetch ? null : new WasmFactory({\n      baseUrl: wasmUrl\n    })\n  };\n  if (!worker) {\n    const workerParams = {\n      verbosity,\n      port: GlobalWorkerOptions.workerPort\n    };\n    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n  const docParams = {\n    docId,\n    apiVersion: \"5.0.375\",\n    data,\n    password,\n    disableAutoFetch,\n    rangeChunkSize,\n    length,\n    docBaseUrl,\n    enableXfa,\n    evaluatorOptions: {\n      maxImageSize,\n      disableFontFace,\n      ignoreErrors,\n      isEvalSupported,\n      isOffscreenCanvasSupported,\n      isImageDecoderSupported,\n      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      useWasm,\n      useWorkerFetch,\n      cMapUrl,\n      iccUrl,\n      standardFontDataUrl,\n      wasmUrl\n    }\n  };\n  const transportParams = {\n    ownerDocument,\n    pdfBug,\n    styleElement,\n    loadingParams: {\n      disableAutoFetch,\n      enableXfa\n    }\n  };\n  worker.promise.then(function () {\n    if (task.destroyed) {\n      throw new Error(\"Loading aborted\");\n    }\n    if (worker.destroyed) {\n      throw new Error(\"Worker was destroyed\");\n    }\n    const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n    let networkStream;\n    if (rangeTransport) {\n      networkStream = new PDFDataTransportStream(rangeTransport, {\n        disableRange,\n        disableStream\n      });\n    } else if (!data) {\n      if (!url) {\n        throw new Error(\"getDocument - no `url` parameter provided.\");\n      }\n      let NetworkStream;\n      if (isNodeJS) {\n        if (isValidFetchUrl(url)) {\n          if (typeof fetch === \"undefined\" || typeof Response === \"undefined\" || !(\"body\" in Response.prototype)) {\n            throw new Error(\"getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.\");\n          }\n          NetworkStream = PDFFetchStream;\n        } else {\n          NetworkStream = PDFNodeStream;\n        }\n      } else {\n        NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n      }\n      networkStream = new NetworkStream({\n        url,\n        length,\n        httpHeaders,\n        withCredentials,\n        rangeChunkSize,\n        disableRange,\n        disableStream\n      });\n    }\n    return workerIdPromise.then(workerId => {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n      if (worker.destroyed) {\n        throw new Error(\"Worker was destroyed\");\n      }\n      const messageHandler = new MessageHandler(docId, workerId, worker.port);\n      const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n      task._transport = transport;\n      messageHandler.send(\"Ready\", null);\n    });\n  }).catch(task._capability.reject);\n  return task;\n}\nfunction getUrlProp(val) {\n  if (val instanceof URL) {\n    return val.href;\n  }\n  if (typeof val === \"string\") {\n    if (isNodeJS) {\n      return val;\n    }\n    const url = URL.parse(val, window.location);\n    if (url) {\n      return url.href;\n    }\n  }\n  throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n  if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n    throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n  if (typeof val !== \"string\") {\n    return null;\n  }\n  if (val.endsWith(\"/\")) {\n    return val;\n  }\n  throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n  constructor() {\n    this._capability = Promise.withResolvers();\n    this._transport = null;\n    this._worker = null;\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n    this.destroyed = false;\n    this.onPassword = null;\n    this.onProgress = null;\n  }\n  get promise() {\n    return this._capability.promise;\n  }\n  async destroy() {\n    this.destroyed = true;\n    try {\n      if (this._worker?.port) {\n        this._worker._pendingDestroy = true;\n      }\n      await this._transport?.destroy();\n    } catch (ex) {\n      if (this._worker?.port) {\n        delete this._worker._pendingDestroy;\n      }\n      throw ex;\n    }\n    this._transport = null;\n    this._worker?.destroy();\n    this._worker = null;\n  }\n}\nclass PDFDataRangeTransport {\n  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = Promise.withResolvers();\n  }\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n  onDataProgress(loaded, total) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n  abort() {}\n}\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n  }\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n  get canvasFactory() {\n    return this._transport.canvasFactory;\n  }\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n  getOutline() {\n    return this._transport.getOutline();\n  }\n  getOptionalContentConfig({\n    intent = \"display\"\n  } = {}) {\n    const {\n      renderingIntent\n    } = this._transport.getRenderingIntent(intent);\n    return this._transport.getOptionalContentConfig(renderingIntent);\n  }\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n  getData() {\n    return this._transport.getData();\n  }\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n  cachedPageNumber(ref) {\n    return this._transport.cachedPageNumber(ref);\n  }\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\nclass PDFPageProxy {\n  #pendingCleanup = false;\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._transport = transport;\n    this._stats = pdfBug ? new StatTimer() : null;\n    this._pdfBug = pdfBug;\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n    this._intentStates = new Map();\n    this.destroyed = false;\n  }\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n  get ref() {\n    return this._pageInfo.ref;\n  }\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n  get view() {\n    return this._pageInfo.view;\n  }\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.view,\n      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n  getAnnotations({\n    intent = \"display\"\n  } = {}) {\n    const {\n      renderingIntent\n    } = this._transport.getRenderingIntent(intent);\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n  }\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n  render({\n    canvasContext,\n    viewport,\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    transform = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null,\n    pageColors = null,\n    printAnnotationStorage = null,\n    isEditing = false\n  }) {\n    this._stats?.time(\"Overall\");\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n    const {\n      renderingIntent,\n      cacheKey\n    } = intentArgs;\n    this.#pendingCleanup = false;\n    optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n    let intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(cacheKey, intentState);\n    }\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = Promise.withResolvers();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null\n      };\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n      if (intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup();\n      if (error) {\n        internalRenderTask.capability.reject(error);\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error)\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n      if (this._stats) {\n        this._stats.timeEnd(\"Rendering\");\n        this._stats.timeEnd(\"Overall\");\n        if (globalThis.Stats?.enabled) {\n          globalThis.Stats.add(this.pageNumber, this._stats);\n        }\n      }\n    };\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      params: {\n        canvasContext,\n        viewport,\n        transform,\n        background\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: this._transport.canvasFactory,\n      filterFactory: this._transport.filterFactory,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug,\n      pageColors\n    });\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n    Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n      if (this.destroyed) {\n        complete();\n        return;\n      }\n      this._stats?.time(\"Rendering\");\n      if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n        throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n      }\n      internalRenderTask.initializeGraphics({\n        transparency,\n        optionalContentConfig\n      });\n      internalRenderTask.operatorListChanged();\n    }).catch(complete);\n    return renderTask;\n  }\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false\n  } = {}) {\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n    let opListTask;\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = Promise.withResolvers();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null\n      };\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n    return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n      pageIndex: this._pageIndex,\n      includeMarkedContent: includeMarkedContent === true,\n      disableNormalization: disableNormalization === true\n    }, {\n      highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n      size(textContent) {\n        return textContent.items.length;\n      }\n    });\n  }\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\n    }\n    const readableStream = this.streamTextContent(params);\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          textContent.lang ??= value.lang;\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n        lang: null\n      };\n      pump();\n    });\n  }\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n  _destroy() {\n    this.destroyed = true;\n    const waitOn = [];\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true\n      });\n      if (intentState.opListReadCapability) {\n        continue;\n      }\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    return Promise.all(waitOn);\n  }\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup();\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n  #tryCleanup() {\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    for (const {\n      renderTasks,\n      operatorList\n    } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n    this._intentStates.clear();\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    return true;\n  }\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return;\n    }\n    this._stats?.timeEnd(\"Page Request\");\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n  _renderPageChunk(operatorListChunk, intentState) {\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup();\n    }\n  }\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n    modifiedIds\n  }) {\n    const {\n      map,\n      transfer\n    } = annotationStorageSerializable;\n    const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n      pageIndex: this._pageIndex,\n      intent: renderingIntent,\n      cacheKey,\n      annotationStorage: map,\n      modifiedIds\n    }, transfer);\n    const reader = readableStream.getReader();\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n    const pump = () => {\n      reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          intentState.streamReader = null;\n          return;\n        }\n        if (this._transport.destroyed) {\n          return;\n        }\n        this._renderPageChunk(value, intentState);\n        pump();\n      }, reason => {\n        intentState.streamReader = null;\n        if (this._transport.destroyed) {\n          return;\n        }\n        if (intentState.operatorList) {\n          intentState.operatorList.lastChunk = true;\n          for (const internalRenderTask of intentState.renderTasks) {\n            internalRenderTask.operatorListChanged();\n          }\n          this.#tryCleanup();\n        }\n        if (intentState.displayReadyCapability) {\n          intentState.displayReadyCapability.reject(reason);\n        } else if (intentState.opListReadCapability) {\n          intentState.opListReadCapability.reject(reason);\n        } else {\n          throw reason;\n        }\n      });\n    };\n    pump();\n  }\n  _abortOperatorList({\n    intentState,\n    reason,\n    force = false\n  }) {\n    if (!intentState.streamReader) {\n      return;\n    }\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n    if (!force) {\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n          delay += reason.extraDelay;\n        }\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({\n            intentState,\n            reason,\n            force: true\n          });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n    intentState.streamReader = null;\n    if (this._transport.destroyed) {\n      return;\n    }\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    this.cleanup();\n  }\n  get stats() {\n    return this._stats;\n  }\n}\nclass LoopbackPort {\n  #listeners = new Map();\n  #deferred = Promise.resolve();\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? {\n        transfer\n      } : null)\n    };\n    this.#deferred.then(() => {\n      for (const [listener] of this.#listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n  addEventListener(name, listener, options = null) {\n    let rmAbort = null;\n    if (options?.signal instanceof AbortSignal) {\n      const {\n        signal\n      } = options;\n      if (signal.aborted) {\n        warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n        return;\n      }\n      const onAbort = () => this.removeEventListener(name, listener);\n      rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n      signal.addEventListener(\"abort\", onAbort);\n    }\n    this.#listeners.set(listener, rmAbort);\n  }\n  removeEventListener(name, listener) {\n    const rmAbort = this.#listeners.get(listener);\n    rmAbort?.();\n    this.#listeners.delete(listener);\n  }\n  terminate() {\n    for (const [, rmAbort] of this.#listeners) {\n      rmAbort?.();\n    }\n    this.#listeners.clear();\n  }\n}\nclass PDFWorker {\n  static #fakeWorkerId = 0;\n  static #isWorkerDisabled = false;\n  static #workerPorts;\n  static {\n    if (isNodeJS) {\n      this.#isWorkerDisabled = true;\n      GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n    }\n    this._isSameOrigin = (baseUrl, otherUrl) => {\n      const base = URL.parse(baseUrl);\n      if (!base?.origin || base.origin === \"null\") {\n        return false;\n      }\n      const other = new URL(otherUrl, base);\n      return base.origin === other.origin;\n    };\n    this._createCDNWrapper = url => {\n      const wrapper = `await import(\"${url}\");`;\n      return URL.createObjectURL(new Blob([wrapper], {\n        type: \"text/javascript\"\n      }));\n    };\n  }\n  constructor({\n    name = null,\n    port = null,\n    verbosity = getVerbosityLevel()\n  } = {}) {\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n    this._readyCapability = Promise.withResolvers();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n    if (port) {\n      if (PDFWorker.#workerPorts?.has(port)) {\n        throw new Error(\"Cannot use more than one PDFWorker per port.\");\n      }\n      (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n    this._initialize();\n  }\n  get promise() {\n    return this._readyCapability.promise;\n  }\n  #resolve() {\n    this._readyCapability.resolve();\n    this._messageHandler.send(\"configure\", {\n      verbosity: this.verbosity\n    });\n  }\n  get port() {\n    return this._port;\n  }\n  get messageHandler() {\n    return this._messageHandler;\n  }\n  _initializeFromPort(port) {\n    this._port = port;\n    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this._messageHandler.on(\"ready\", function () {});\n    this.#resolve();\n  }\n  _initialize() {\n    if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n      this._setupFakeWorker();\n      return;\n    }\n    let {\n      workerSrc\n    } = PDFWorker;\n    try {\n      if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n        workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n      }\n      const worker = new Worker(workerSrc, {\n        type: \"module\"\n      });\n      const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n      const terminateEarly = () => {\n        ac.abort();\n        messageHandler.destroy();\n        worker.terminate();\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n        } else {\n          this._setupFakeWorker();\n        }\n      };\n      const ac = new AbortController();\n      worker.addEventListener(\"error\", () => {\n        if (!this._webWorker) {\n          terminateEarly();\n        }\n      }, {\n        signal: ac.signal\n      });\n      messageHandler.on(\"test\", data => {\n        ac.abort();\n        if (this.destroyed || !data) {\n          terminateEarly();\n          return;\n        }\n        this._messageHandler = messageHandler;\n        this._port = worker;\n        this._webWorker = worker;\n        this.#resolve();\n      });\n      messageHandler.on(\"ready\", data => {\n        ac.abort();\n        if (this.destroyed) {\n          terminateEarly();\n          return;\n        }\n        try {\n          sendTest();\n        } catch {\n          this._setupFakeWorker();\n        }\n      });\n      const sendTest = () => {\n        const testObj = new Uint8Array();\n        messageHandler.send(\"test\", testObj, [testObj.buffer]);\n      };\n      sendTest();\n      return;\n    } catch {\n      info(\"The worker has been disabled.\");\n    }\n    this._setupFakeWorker();\n  }\n  _setupFakeWorker() {\n    if (!PDFWorker.#isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorker.#isWorkerDisabled = true;\n    }\n    PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n      if (this.destroyed) {\n        this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n        return;\n      }\n      const port = new LoopbackPort();\n      this._port = port;\n      const id = `fake${PDFWorker.#fakeWorkerId++}`;\n      const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n      WorkerMessageHandler.setup(workerHandler, port);\n      this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n      this.#resolve();\n    }).catch(reason => {\n      this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n    });\n  }\n  destroy() {\n    this.destroyed = true;\n    this._webWorker?.terminate();\n    this._webWorker = null;\n    PDFWorker.#workerPorts?.delete(this._port);\n    this._port = null;\n    this._messageHandler?.destroy();\n    this._messageHandler = null;\n  }\n  static fromPort(params) {\n    if (!params?.port) {\n      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n    }\n    const cachedPort = this.#workerPorts?.get(params.port);\n    if (cachedPort) {\n      if (cachedPort._pendingDestroy) {\n        throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n  static get #mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch {\n      return null;\n    }\n  }\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\nclass WorkerTransport {\n  #methodPromises = new Map();\n  #pageCache = new Map();\n  #pagePromises = new Map();\n  #pageRefCache = new Map();\n  #passwordCapability = null;\n  constructor(messageHandler, loadingTask, networkStream, params, factory) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader({\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement\n    });\n    this.loadingParams = params.loadingParams;\n    this._params = params;\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n    this.wasmFactory = factory.wasmFactory;\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = Promise.withResolvers();\n    this.setupMessageHandler();\n  }\n  #cacheSimpleMethod(name, data = null) {\n    const cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, data);\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n  getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY;\n    let annotationStorageSerializable = SerializableEmpty;\n    switch (intent) {\n      case \"any\":\n        renderingIntent = RenderingIntentFlag.ANY;\n        break;\n      case \"display\":\n        break;\n      case \"print\":\n        renderingIntent = RenderingIntentFlag.PRINT;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n    const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n    switch (annotationMode) {\n      case AnnotationMode.DISABLE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n      case AnnotationMode.ENABLE:\n        break;\n      case AnnotationMode.ENABLE_FORMS:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n      case AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n    if (isEditing) {\n      renderingIntent += RenderingIntentFlag.IS_EDITING;\n    }\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n    const {\n      ids: modifiedIds,\n      hash: modifiedIdsHash\n    } = annotationStorage.modifiedIds;\n    const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n    return {\n      renderingIntent,\n      cacheKey: cacheKeyBuf.join(\"_\"),\n      annotationStorageSerializable,\n      modifiedIds\n    };\n  }\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n    this.destroyed = true;\n    this.destroyCapability = Promise.withResolvers();\n    this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n    const waitOn = [];\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    this.#pageRefCache.clear();\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n      TextLayer.cleanup();\n      this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n      this.messageHandler?.destroy();\n      this.messageHandler = null;\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n  setupMessageHandler() {\n    const {\n      messageHandler,\n      loadingTask\n    } = this;\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"ReaderHeadersReady\", async data => {\n      await this._fullReader.headersReady;\n      const {\n        isStreamingSupported,\n        isRangeSupported,\n        contentLength\n      } = this._fullReader;\n      if (!isStreamingSupported || !isRangeSupported) {\n        if (this._lastProgress) {\n          loadingTask.onProgress?.(this._lastProgress);\n        }\n        this._fullReader.onProgress = evt => {\n          loadingTask.onProgress?.({\n            loaded: evt.loaded,\n            total: evt.total\n          });\n        };\n      }\n      return {\n        isStreamingSupported,\n        isRangeSupported,\n        contentLength\n      };\n    });\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n      const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n      sink.onPull = () => {\n        rangeReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"GetDoc\", ({\n      pdfInfo\n    }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n    messageHandler.on(\"DocException\", ex => {\n      loadingTask._capability.reject(wrapReason(ex));\n    });\n    messageHandler.on(\"PasswordRequest\", ex => {\n      this.#passwordCapability = Promise.withResolvers();\n      try {\n        if (!loadingTask.onPassword) {\n          throw wrapReason(ex);\n        }\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({\n              password\n            });\n          }\n        };\n        loadingTask.onPassword(updatePassword, ex.code);\n      } catch (err) {\n        this.#passwordCapability.reject(err);\n      }\n      return this.#passwordCapability.promise;\n    });\n    messageHandler.on(\"DataLoaded\", data => {\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length\n      });\n      this.downloadInfoCapability.resolve(data);\n    });\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return;\n      }\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return null;\n      }\n      if (this.commonObjs.has(id)) {\n        return null;\n      }\n      switch (type) {\n        case \"Font\":\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n          const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n          const font = new FontFaceObject(exportedData, inspectFont);\n          this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n            id\n          })).finally(() => {\n            if (!font.fontExtraProperties && font.data) {\n              font.data = null;\n            }\n            this.commonObjs.resolve(id, font);\n          });\n          break;\n        case \"CopyLocalImage\":\n          const {\n            imageRef\n          } = exportedData;\n          assert(imageRef, \"The imageRef must be defined.\");\n          for (const pageProxy of this.#pageCache.values()) {\n            for (const [, data] of pageProxy.objs) {\n              if (data?.ref !== imageRef) {\n                continue;\n              }\n              if (!data.dataLen) {\n                return null;\n              }\n              this.commonObjs.resolve(id, structuredClone(data));\n              return data.dataLen;\n            }\n          }\n          break;\n        case \"FontPath\":\n        case \"Image\":\n        case \"Pattern\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n      return null;\n    });\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        return;\n      }\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close();\n        return;\n      }\n      switch (type) {\n        case \"Image\":\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return;\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total\n      });\n    });\n    messageHandler.on(\"FetchBinaryData\", async data => {\n      if (this.destroyed) {\n        throw new Error(\"Worker was destroyed.\");\n      }\n      const factory = this[data.type];\n      if (!factory) {\n        throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n      }\n      return factory.fetch(data);\n    });\n  }\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n    }\n    const {\n      map,\n      transfer\n    } = this.annotationStorage.serializable;\n    return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n      isPureXfa: !!this._htmlForXfa,\n      numPages: this._numPages,\n      annotationStorage: map,\n      filename: this._fullReader?.filename ?? null\n    }, transfer).finally(() => {\n      this.annotationStorage.resetModified();\n    });\n  }\n  getPage(pageNumber) {\n    if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n      pageIndex\n    }).then(pageInfo => {\n      if (this.destroyed) {\n        throw new Error(\"Transport destroyed\");\n      }\n      if (pageInfo.refStr) {\n        this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n      }\n      const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n      this.#pageCache.set(pageIndex, page);\n      return page;\n    });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n  getPageIndex(ref) {\n    if (!isRefProxy(ref)) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen\n    });\n  }\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent\n    });\n  }\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\n  }\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\n  getDestination(id) {\n    if (typeof id !== \"string\") {\n      return Promise.reject(new Error(\"Invalid destination request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetDestination\", {\n      id\n    });\n  }\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\n  }\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex\n    });\n  }\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex\n    });\n  }\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n  getOptionalContentConfig(renderingIntent) {\n    return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n  }\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n  getMetadata() {\n    const name = \"GetMetadata\",\n      cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n      info: results[0],\n      metadata: results[1] ? new Metadata(results[1]) : null,\n      contentDispositionFilename: this._fullReader?.filename ?? null,\n      contentLength: this._fullReader?.contentLength ?? null\n    }));\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return;\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n      if (!cleanupSuccessful) {\n        throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(true);\n    TextLayer.cleanup();\n  }\n  cachedPageNumber(ref) {\n    if (!isRefProxy(ref)) {\n      return null;\n    }\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n    return this.#pageRefCache.get(refStr) ?? null;\n  }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n  #objs = Object.create(null);\n  #ensureObj(objId) {\n    return this.#objs[objId] ||= {\n      ...Promise.withResolvers(),\n      data: INITIAL_DATA\n    };\n  }\n  get(objId, callback = null) {\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.promise.then(() => callback(obj.data));\n      return null;\n    }\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n  has(objId) {\n    const obj = this.#objs[objId];\n    return !!obj && obj.data !== INITIAL_DATA;\n  }\n  delete(objId) {\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      return false;\n    }\n    delete this.#objs[objId];\n    return true;\n  }\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.resolve();\n  }\n  clear() {\n    for (const objId in this.#objs) {\n      const {\n        data\n      } = this.#objs[objId];\n      data?.bitmap?.close();\n    }\n    this.#objs = Object.create(null);\n  }\n  *[Symbol.iterator]() {\n    for (const objId in this.#objs) {\n      const {\n        data\n      } = this.#objs[objId];\n      if (data === INITIAL_DATA) {\n        continue;\n      }\n      yield [objId, data];\n    }\n  }\n}\nclass RenderTask {\n  #internalRenderTask = null;\n  onContinue = null;\n  onError = null;\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n  }\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(null, extraDelay);\n  }\n  get separateAnnots() {\n    const {\n      separateAnnots\n    } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const {\n      annotationCanvasMap\n    } = this.#internalRenderTask;\n    return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n  }\n}\nclass InternalRenderTask {\n  #rAF = null;\n  static #canvasInUse = new WeakSet();\n  constructor({\n    callback,\n    params,\n    objs,\n    commonObjs,\n    annotationCanvasMap,\n    operatorList,\n    pageIndex,\n    canvasFactory,\n    filterFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false,\n    pageColors = null\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this._pdfBug = pdfBug;\n    this.pageColors = pageColors;\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = Promise.withResolvers();\n    this.task = new RenderTask(this);\n    this._cancelBound = this.cancel.bind(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n  get completed() {\n    return this.capability.promise.catch(function () {});\n  }\n  initializeGraphics({\n    transparency = false,\n    optionalContentConfig\n  }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\n    }\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\n      this.stepper.init(this.operatorList);\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n    }\n    const {\n      canvasContext,\n      viewport,\n      transform,\n      background\n    } = this.params;\n    this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n      optionalContentConfig\n    }, this.annotationCanvasMap, this.pageColors);\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n    this.graphicsReadyCallback?.();\n  }\n  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    if (this.#rAF) {\n      window.cancelAnimationFrame(this.#rAF);\n      this.#rAF = null;\n    }\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n    error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n    this.callback(error);\n    this.task.onError?.(error);\n  }\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.stepper?.updateOperatorList(this.operatorList);\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\n  _continue() {\n    this.running = true;\n    if (this.cancelled) {\n      return;\n    }\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      this.#rAF = window.requestAnimationFrame(() => {\n        this.#rAF = null;\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\n        this.callback();\n      }\n    }\n  }\n}\nconst version = \"5.0.375\";\nconst build = \"23972e194\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n  static G_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [g, g, g];\n  }\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n  static RGB_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n  static T_HTML() {\n    return \"#00000000\";\n  }\n  static T_rgb() {\n    return [null];\n  }\n  static CMYK_RGB([c, y, m, k]) {\n    return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n  }\n  static CMYK_rgb([c, y, m, k]) {\n    return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n  }\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\n  }\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return [\"CMYK\", c, m, y, k];\n  }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n  create(width, height, skipDimensions = false) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid SVG dimensions\");\n    }\n    const svg = this._createSVG(\"svg:svg\");\n    svg.setAttribute(\"version\", \"1.1\");\n    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n    return svg;\n  }\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n    return this._createSVG(type);\n  }\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, {\n      value: null\n    });\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n        if (intent === \"print\") {\n          break;\n        }\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, {\n            value: event.target.value\n          });\n        });\n        break;\n      case \"input\":\n        if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            html.removeAttribute(\"checked\");\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, {\n              value: event.target.value\n            });\n          });\n        }\n        break;\n      case \"select\":\n        if (storedData.value !== null) {\n          html.setAttribute(\"value\", storedData.value);\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            } else if (option.attributes.hasOwnProperty(\"selected\")) {\n              delete option.attributes.selected;\n            }\n          }\n        }\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n          storage.setValue(id, {\n            value\n          });\n        });\n        break;\n    }\n  }\n  static setAttributes({\n    html,\n    element,\n    storage = null,\n    intent,\n    linkService\n  }) {\n    const {\n      attributes\n    } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n    if (attributes.type === \"radio\") {\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined) {\n        continue;\n      }\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          break;\n        case \"id\":\n          html.setAttribute(\"data-element-id\", value);\n          break;\n        case \"style\":\n          Object.assign(html.style, value);\n          break;\n        case \"textContent\":\n          html.textContent = value;\n          break;\n        default:\n          if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n            html.setAttribute(key, value);\n          }\n      }\n    }\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n    }\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService\n      });\n    }\n    const isNotForRichText = intent !== \"richText\";\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n    const textDivs = [];\n    if (root.children.length === 0) {\n      if (root.value) {\n        const node = document.createTextNode(root.value);\n        rootHtml.append(node);\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n          textDivs.push(node);\n        }\n      }\n      return {\n        textDivs\n      };\n    }\n    const stack = [[root, -1, rootHtml]];\n    while (stack.length > 0) {\n      const [parent, i, html] = stack.at(-1);\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n      const {\n        name\n      } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n      const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n      html.append(childHtml);\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService\n        });\n      }\n      if (child.children?.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n        childHtml.append(node);\n      }\n    }\n    for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n      el.setAttribute(\"readOnly\", true);\n    }\n    return {\n      textDivs\n    };\n  }\n  static update(parameters) {\n    const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n    parameters.div.style.transform = transform;\n    parameters.div.hidden = false;\n  }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nclass AnnotationElementFactory {\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\nclass AnnotationElement {\n  #updates = null;\n  #hasBorder = false;\n  #popupElement = null;\n  constructor(parameters, {\n    isRenderable = false,\n    ignoreBorder = false,\n    createQuadrilaterals = false\n  } = {}) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this.parent = parameters.parent;\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n  static _hasPopupData({\n    titleObj,\n    contentsObj,\n    richText\n  }) {\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\n  }\n  get _isEditable() {\n    return this.data.isEditable;\n  }\n  get hasPopupData() {\n    return AnnotationElement._hasPopupData(this.data);\n  }\n  updateEdited(params) {\n    if (!this.container) {\n      return;\n    }\n    this.#updates ||= {\n      rect: this.data.rect.slice(0)\n    };\n    const {\n      rect\n    } = params;\n    if (rect) {\n      this.#setRectEdited(rect);\n    }\n    this.#popupElement?.popup.updateEdited(params);\n  }\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    this.#setRectEdited(this.#updates.rect);\n    this.#popupElement?.popup.resetEdited();\n    this.#updates = null;\n  }\n  #setRectEdited(rect) {\n    const {\n      container: {\n        style\n      },\n      data: {\n        rect: currentRect,\n        rotation\n      },\n      parent: {\n        viewport: {\n          rawDims: {\n            pageWidth,\n            pageHeight,\n            pageX,\n            pageY\n          }\n        }\n      }\n    } = this;\n    currentRect?.splice(0, 4, ...rect);\n    style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n    style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n    if (rotation === 0) {\n      style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n      style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation);\n    }\n  }\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: {\n        page,\n        viewport\n      }\n    } = this;\n    const container = document.createElement(\"section\");\n    container.setAttribute(\"data-annotation-id\", data.id);\n    if (!(this instanceof WidgetAnnotationElement)) {\n      container.tabIndex = DEFAULT_TAB_INDEX;\n    }\n    const {\n      style\n    } = container;\n    style.zIndex = this.parent.zIndex++;\n    if (data.alternativeText) {\n      container.title = data.alternativeText;\n    }\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const {\n        rotation\n      } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n    const {\n      width,\n      height\n    } = this;\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      style.borderWidth = `${data.borderStyle.width}px`;\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n        style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n        style.borderRadius = radius;\n      }\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          style.borderStyle = \"solid\";\n          break;\n        case AnnotationBorderStyleType.DASHED:\n          style.borderStyle = \"dashed\";\n          break;\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n        case AnnotationBorderStyleType.UNDERLINE:\n          style.borderBottomStyle = \"solid\";\n          break;\n        default:\n          break;\n      }\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n      } else {\n        style.borderWidth = 0;\n      }\n    }\n    const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n    const {\n      pageWidth,\n      pageHeight,\n      pageX,\n      pageY\n    } = viewport.rawDims;\n    style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n    style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n    const {\n      rotation\n    } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      style.width = `${100 * width / pageWidth}%`;\n      style.height = `${100 * height / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n    return container;\n  }\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const {\n      pageWidth,\n      pageHeight\n    } = this.parent.viewport.rawDims;\n    let {\n      width,\n      height\n    } = this;\n    if (angle % 180 !== 0) {\n      [width, height] = [height, width];\n    }\n    container.style.width = `${100 * width / pageWidth}%`;\n    container.style.height = `${100 * height / pageHeight}%`;\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n  }\n  get _commonActions() {\n    const setColor = (jsName, styleName, event) => {\n      const color = event.detail[jsName];\n      const colorType = color[0];\n      const colorArray = color.slice(1);\n      event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n      });\n    };\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const {\n          display\n        } = event.detail;\n        const hidden = display % 2 === 1;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noView: hidden,\n          noPrint: display === 1 || display === 2\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: !event.detail.print\n        });\n      },\n      hidden: event => {\n        const {\n          hidden\n        } = event.detail;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: hidden,\n          noView: hidden\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({\n          preventScroll: false\n        }), 0);\n      },\n      userName: event => {\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        event.target.disabled = event.detail.readonly;\n      },\n      required: event => {\n        this._setRequired(event.target, event.detail.required);\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      },\n      rotation: event => {\n        const angle = event.detail.rotation;\n        this.setRotation(angle);\n        this.annotationStorage.setValue(this.data.id, {\n          rotation: angle\n        });\n      }\n    });\n  }\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const commonActions = this._commonActions;\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n      action?.(jsEvent);\n    }\n  }\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\n    const commonActions = this._commonActions;\n    for (const [actionName, detail] of Object.entries(storedData)) {\n      const action = commonActions[actionName];\n      if (action) {\n        const eventProxy = {\n          detail: {\n            [actionName]: detail\n          },\n          target: element\n        };\n        action(eventProxy);\n        delete storedData[actionName];\n      }\n    }\n  }\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const {\n      quadPoints\n    } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n    if (quadPoints.length === 8) {\n      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n      if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n        return;\n      }\n    }\n    const {\n      style\n    } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const {\n        borderColor,\n        borderWidth\n      } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n      this.container.classList.add(\"hasBorder\");\n    }\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n    const {\n      svgFactory\n    } = this;\n    const svg = svgFactory.createElement(\"svg\");\n    svg.classList.add(\"quadrilateralsContainer\");\n    svg.setAttribute(\"width\", 0);\n    svg.setAttribute(\"height\", 0);\n    const defs = svgFactory.createElement(\"defs\");\n    svg.append(defs);\n    const clipPath = svgFactory.createElement(\"clipPath\");\n    const id = `clippath_${this.data.id}`;\n    clipPath.setAttribute(\"id\", id);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    defs.append(clipPath);\n    for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n      const trX = quadPoints[i];\n      const trY = quadPoints[i + 1];\n      const blX = quadPoints[i + 2];\n      const blY = quadPoints[i + 3];\n      const rect = svgFactory.createElement(\"rect\");\n      const x = (blX - rectBlX) / width;\n      const y = (rectTrY - trY) / height;\n      const rectWidth = (trX - blX) / width;\n      const rectHeight = (trY - blY) / height;\n      rect.setAttribute(\"x\", x);\n      rect.setAttribute(\"y\", y);\n      rect.setAttribute(\"width\", rectWidth);\n      rect.setAttribute(\"height\", rectHeight);\n      clipPath.append(rect);\n      svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n    }\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n  _createPopup() {\n    const {\n      data\n    } = this;\n    const popup = this.#popupElement = new PopupAnnotationElement({\n      data: {\n        color: data.color,\n        titleObj: data.titleObj,\n        modificationDate: data.modificationDate,\n        contentsObj: data.contentsObj,\n        richText: data.richText,\n        parentRect: data.rect,\n        borderStyle: 0,\n        id: `popup_${data.id}`,\n        rotation: data.rotation\n      },\n      parent: this.parent,\n      elements: [this]\n    });\n    this.parent.div.append(popup.render());\n  }\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const {\n          page,\n          id,\n          exportValues\n        } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n          const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({\n            id,\n            exportValue,\n            domElement\n          });\n        }\n      }\n      return fields;\n    }\n    for (const domElement of document.getElementsByName(name)) {\n      const {\n        exportValue\n      } = domElement;\n      const id = domElement.getAttribute(\"data-element-id\");\n      if (id === skipId) {\n        continue;\n      }\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n      fields.push({\n        id,\n        exportValue,\n        domElement\n      });\n    }\n    return fields;\n  }\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n  getElementsToTriggerPopup() {\n    return this.container;\n  }\n  addHighlightArea() {\n    const triggers = this.getElementsToTriggerPopup();\n    if (Array.isArray(triggers)) {\n      for (const element of triggers) {\n        element.classList.add(\"highlightArea\");\n      }\n    } else {\n      triggers.classList.add(\"highlightArea\");\n    }\n  }\n  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: {\n        id: editId\n      }\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId\n      });\n    });\n  }\n  get width() {\n    return this.data.rect[2] - this.data.rect[0];\n  }\n  get height() {\n    return this.data.rect[3] - this.data.rect[1];\n  }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters, options = null) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: !!options?.ignoreBorder,\n      createQuadrilaterals: true\n    });\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\n  }\n  render() {\n    const {\n      data,\n      linkService\n    } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\n    if (data.url) {\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\n      isBound = true;\n    } else if (data.action) {\n      this._bindNamedAction(link, data.action);\n      isBound = true;\n    } else if (data.attachment) {\n      this.#bindAttachment(link, data.attachment, data.attachmentDest);\n      isBound = true;\n    } else if (data.setOCGState) {\n      this.#bindSetOCGState(link, data.setOCGState);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest);\n      isBound = true;\n    } else {\n      if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n        isBound = true;\n      } else if (this.isTooltipOnly && !isBound) {\n        this._bindLink(link, \"\");\n        isBound = true;\n      }\n    }\n    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.container.append(link);\n    }\n    return this.container;\n  }\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\n  }\n  _bindLink(link, destination) {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n      return false;\n    };\n    if (destination || destination === \"\") {\n      this.#setInternalLink();\n    }\n  }\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n  #bindAttachment(link, attachment, dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    if (attachment.description) {\n      link.title = attachment.description;\n    }\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n  #bindSetOCGState(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeSetOCGState(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n      if (!jsName) {\n        continue;\n      }\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name\n          }\n        });\n        return false;\n      };\n    }\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n    if (!this._fieldObjects) {\n      warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n    link.onclick = () => {\n      otherClickAction?.();\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include\n      } = resetForm;\n      const allFields = [];\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n          for (const {\n            id\n          } of fields) {\n            fieldIds.add(id);\n          }\n        }\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const {\n          id\n        } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          case \"checkbox\":\n          case \"radiobutton\":\n            {\n              const value = field.defaultValue === field.exportValues;\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          case \"combobox\":\n          case \"listbox\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          default:\n            continue;\n        }\n        const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n        if (!domElement) {\n          continue;\n        } else if (!GetElementsByNameSet.has(domElement)) {\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\n          continue;\n        }\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n      if (this.enableScripting) {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\"\n          }\n        });\n      }\n      return false;\n    };\n  }\n}\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n    const image = document.createElement(\"img\");\n    image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\"data-l10n-args\", JSON.stringify({\n      type: this.data.name\n    }));\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.append(image);\n    return this.container;\n  }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    return this.container;\n  }\n  showElementAndHideCanvas(element) {\n    if (this.data.hasOwnCanvas) {\n      if (element.previousSibling?.nodeName === \"CANVAS\") {\n        element.previousSibling.hidden = true;\n      }\n      element.hidden = false;\n    }\n  }\n  _getKeyModifier(event) {\n    return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n            shift: event.shiftKey,\n            modifier: this._getKeyModifier(event)\n          }\n        });\n      });\n    } else {\n      element.addEventListener(baseName, event => {\n        if (baseName === \"blur\") {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          elementData.focused = false;\n        } else if (baseName === \"focus\") {\n          if (elementData.focused) {\n            return;\n          }\n          elementData.focused = true;\n        }\n        if (!valueGetter) {\n          return;\n        }\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event)\n          }\n        });\n      });\n    }\n  }\n  _setEventListeners(element, elementData, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        if (eventName === \"Focus\" || eventName === \"Blur\") {\n          elementData ||= {\n            focused: false\n          };\n        }\n        this._setEventListener(element, elementData, baseName, eventName, getter);\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n          this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n        } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n          this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n        }\n      }\n    }\n  }\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const {\n      fontColor\n    } = this.data.defaultAppearanceData;\n    const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n    const style = element.style;\n    let computedFontSize;\n    const BORDER_SIZE = 2;\n    const roundToOneDecimal = x => Math.round(10 * x) / 10;\n    if (this.data.multiLine) {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n    } else {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n      computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n  }\n  _setRequired(element, isRequired) {\n    if (isRequired) {\n      element.setAttribute(\"required\", true);\n    } else {\n      element.removeAttribute(\"required\");\n    }\n    element.setAttribute(\"aria-required\", isRequired);\n  }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n    super(parameters, {\n      isRenderable\n    });\n  }\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(base.name, base.id)) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, {\n        [keyInStorage]: value\n      });\n    }\n  }\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    this.container.classList.add(\"textWidgetAnnotation\");\n    let element = null;\n    if (this.renderForms) {\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue\n      });\n      let textContent = storedData.value || \"\";\n      const maxLen = storage.getValue(id, {\n        charLimit: this.data.maxLen\n      }).charLimit;\n      if (maxLen && textContent.length > maxLen) {\n        textContent = textContent.slice(0, maxLen);\n      }\n      let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false\n      };\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = fieldFormattedValues ?? textContent;\n        if (this.data.doNotScroll) {\n          element.style.overflowY = \"hidden\";\n        }\n      } else {\n        element = document.createElement(\"input\");\n        element.type = this.data.password ? \"password\" : \"text\";\n        element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n        if (this.data.doNotScroll) {\n          element.style.overflowX = \"hidden\";\n        }\n      }\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n      GetElementsByNameSet.add(element);\n      element.setAttribute(\"data-element-id\", id);\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n      this._setRequired(element, this.data.required);\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, {\n          value: event.target.value\n        });\n        this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n        elementData.formattedValue = null;\n      });\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n      let blurListener = event => {\n        const {\n          formattedValue\n        } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        event.target.scrollLeft = 0;\n      };\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const {\n            target\n          } = event;\n          if (elementData.userValue) {\n            target.value = elementData.userValue;\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          if (!this.data.actions?.Focus) {\n            elementData.focused = true;\n          }\n        });\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          this.showElementAndHideCanvas(jsEvent.target);\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value ?? \"\";\n              storage.setValue(id, {\n                value: elementData.userValue.toString()\n              });\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const {\n                formattedValue\n              } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n                event.target.value = formattedValue;\n              }\n              storage.setValue(id, {\n                formattedValue\n              });\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const {\n                charLimit\n              } = event.detail;\n              const {\n                target\n              } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\n              target.setAttribute(\"maxLength\", charLimit);\n              let value = elementData.userValue;\n              if (!value || value.length <= charLimit) {\n                return;\n              }\n              value = value.slice(0, charLimit);\n              target.value = elementData.userValue = value;\n              storage.setValue(id, {\n                value\n              });\n              this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n                source: this,\n                detail: {\n                  id,\n                  name: \"Keystroke\",\n                  value,\n                  willCommit: true,\n                  commitKey: 1,\n                  selStart: target.selectionStart,\n                  selEnd: target.selectionEnd\n                }\n              });\n            }\n          };\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const {\n            value\n          } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = value;\n          elementData.userValue = value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd\n            }\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          if (!this.data.actions?.Blur) {\n            elementData.focused = false;\n          }\n          const {\n            value\n          } = event.target;\n          elementData.userValue = value;\n          if (elementData.lastCommittedValue !== value) {\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                willCommit: true,\n                commitKey: elementData.commitKey,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd\n              }\n            });\n          }\n          _blurListener(event);\n        });\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const {\n              data,\n              target\n            } = event;\n            const {\n              value,\n              selectionStart,\n              selectionEnd\n            } = target;\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n            switch (event.inputType) {\n              case \"deleteWordBackward\":\n                {\n                  const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n                  if (match) {\n                    selStart -= match[0].length;\n                  }\n                  break;\n                }\n              case \"deleteWordForward\":\n                {\n                  const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n                  if (match) {\n                    selEnd += match[0].length;\n                  }\n                  break;\n                }\n              case \"deleteContentBackward\":\n                if (selectionStart === selectionEnd) {\n                  selStart -= 1;\n                }\n                break;\n              case \"deleteContentForward\":\n                if (selectionStart === selectionEnd) {\n                  selEnd += 1;\n                }\n                break;\n            }\n            event.preventDefault();\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                change: data || \"\",\n                willCommit: false,\n                selStart,\n                selEnd\n              }\n            });\n          });\n        }\n        this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n      }\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: !!parameters.data.hasOwnCanvas\n    });\n  }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue\n    }).value;\n    if (typeof value === \"string\") {\n      value = value !== \"Off\";\n      storage.setValue(id, {\n        value\n      });\n    }\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = DEFAULT_TAB_INDEX;\n    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n      for (const checkbox of this._getElementsByName(name, id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, {\n          value: curChecked\n        });\n      }\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\n    if (this.enableScripting && this.hasJSActions) {\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            event.target.checked = event.detail.value !== \"Off\";\n            storage.setValue(id, {\n              value: event.target.checked\n            });\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n  render() {\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue\n    }).value;\n    if (typeof value === \"string\") {\n      value = value !== data.buttonValue;\n      storage.setValue(id, {\n        value\n      });\n    }\n    if (value) {\n      for (const radio of this._getElementsByName(data.fieldName, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n    }\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"radio\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.tabIndex = DEFAULT_TAB_INDEX;\n    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n      for (const radio of this._getElementsByName(name, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n    });\n    if (this.enableScripting && this.hasJSActions) {\n      const pdfButtonValue = data.buttonValue;\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value: event => {\n            const checked = pdfButtonValue === event.detail.value;\n            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n              storage.setValue(radio.id, {\n                value: curChecked\n              });\n            }\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      ignoreBorder: parameters.data.hasAppearance\n    });\n  }\n  render() {\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n    return container;\n  }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n  render() {\n    this.container.classList.add(\"choiceWidgetAnnotation\");\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue\n    });\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n    if (!this.data.combo) {\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n      if (storedData.value.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n        addAnEmptyEntry = false;\n      }\n      selectElement.append(optionElement);\n    }\n    let removeEmptyEntry = null;\n    if (addAnEmptyEntry) {\n      const noneOptionElement = document.createElement(\"option\");\n      noneOptionElement.value = \" \";\n      noneOptionElement.setAttribute(\"hidden\", true);\n      noneOptionElement.setAttribute(\"selected\", true);\n      selectElement.prepend(noneOptionElement);\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const {\n        options,\n        multiple\n      } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n    };\n    let selectedValues = getValue(false);\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => ({\n        displayValue: option.textContent,\n        exportValue: option.value\n      }));\n    };\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            removeEmptyEntry?.();\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n            storage.setValue(id, {\n              value: getValue(true)\n            });\n            selectedValues = getValue(false);\n          },\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(options, option => option.selected);\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, {\n              value: null,\n              items: []\n            });\n            selectedValues = getValue(false);\n          },\n          insert(event) {\n            const {\n              index,\n              displayValue,\n              exportValue\n            } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          items(event) {\n            const {\n              items\n            } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const {\n                displayValue,\n                exportValue\n              } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.append(optionElement);\n            }\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n            storage.setValue(id, {\n              value: getValue(true)\n            });\n            selectedValues = getValue(false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(true);\n        const change = getValue(false);\n        storage.setValue(id, {\n          value: exportValue\n        });\n        event.preventDefault();\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            change,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false\n          }\n        });\n      });\n      this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, {\n          value: getValue(true)\n        });\n      });\n    }\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {}\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const {\n      data,\n      elements\n    } = parameters;\n    super(parameters, {\n      isRenderable: AnnotationElement._hasPopupData(data)\n    });\n    this.elements = elements;\n    this.popup = null;\n  }\n  render() {\n    this.container.classList.add(\"popupAnnotation\");\n    const popup = this.popup = new PopupElement({\n      container: this.container,\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText,\n      rect: this.data.rect,\n      parentRect: this.data.parentRect || null,\n      parent: this.parent,\n      elements: this.elements,\n      open: this.data.open\n    });\n    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      element.container.ariaHasPopup = \"dialog\";\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n    this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n    return this.container;\n  }\n}\nclass PopupElement {\n  #boundKeyDown = this.#keyDown.bind(this);\n  #boundHide = this.#hide.bind(this);\n  #boundShow = this.#show.bind(this);\n  #boundToggle = this.#toggle.bind(this);\n  #color = null;\n  #container = null;\n  #contentsObj = null;\n  #dateObj = null;\n  #elements = null;\n  #parent = null;\n  #parentRect = null;\n  #pinned = false;\n  #popup = null;\n  #position = null;\n  #rect = null;\n  #richText = null;\n  #titleObj = null;\n  #updates = null;\n  #wasVisible = false;\n  constructor({\n    container,\n    color,\n    elements,\n    titleObj,\n    modificationDate,\n    contentsObj,\n    richText,\n    parent,\n    rect,\n    parentRect,\n    open\n  }) {\n    this.#container = container;\n    this.#titleObj = titleObj;\n    this.#contentsObj = contentsObj;\n    this.#richText = richText;\n    this.#parent = parent;\n    this.#color = color;\n    this.#rect = rect;\n    this.#parentRect = parentRect;\n    this.#elements = elements;\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this.#boundToggle);\n      element.addEventListener(\"mouseenter\", this.#boundShow);\n      element.addEventListener(\"mouseleave\", this.#boundHide);\n      element.classList.add(\"popupTriggerArea\");\n    }\n    for (const element of elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n    }\n    this.#container.hidden = true;\n    if (open) {\n      this.#toggle();\n    }\n  }\n  render() {\n    if (this.#popup) {\n      return;\n    }\n    const popup = this.#popup = document.createElement(\"div\");\n    popup.className = \"popup\";\n    if (this.#color) {\n      const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n      popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n    }\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    const title = document.createElement(\"h1\");\n    header.append(title);\n    ({\n      dir: title.dir,\n      str: title.textContent\n    } = this.#titleObj);\n    popup.append(header);\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.classList.add(\"popupDate\");\n      modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n      modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n        dateObj: this.#dateObj.valueOf()\n      }));\n      header.append(modificationDate);\n    }\n    const html = this.#html;\n    if (html) {\n      XfaLayer.render({\n        xfaHtml: html,\n        intent: \"richText\",\n        div: popup\n      });\n      popup.lastChild.classList.add(\"richText\", \"popupContent\");\n    } else {\n      const contents = this._formatContents(this.#contentsObj);\n      popup.append(contents);\n    }\n    this.#container.append(popup);\n  }\n  get #html() {\n    const richText = this.#richText;\n    const contentsObj = this.#contentsObj;\n    if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n      return this.#richText.html || null;\n    }\n    return null;\n  }\n  get #fontSize() {\n    return this.#html?.attributes?.style?.fontSize || 0;\n  }\n  get #fontColor() {\n    return this.#html?.attributes?.style?.color || null;\n  }\n  #makePopupContent(text) {\n    const popupLines = [];\n    const popupContent = {\n      str: text,\n      html: {\n        name: \"div\",\n        attributes: {\n          dir: \"auto\"\n        },\n        children: [{\n          name: \"p\",\n          children: popupLines\n        }]\n      }\n    };\n    const lineAttributes = {\n      style: {\n        color: this.#fontColor,\n        fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n      }\n    };\n    for (const line of text.split(\"\\n\")) {\n      popupLines.push({\n        name: \"span\",\n        value: line,\n        attributes: lineAttributes\n      });\n    }\n    return popupContent;\n  }\n  _formatContents({\n    str,\n    dir\n  }) {\n    const p = document.createElement(\"p\");\n    p.classList.add(\"popupContent\");\n    p.dir = dir;\n    const lines = str.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.append(document.createTextNode(line));\n      if (i < ii - 1) {\n        p.append(document.createElement(\"br\"));\n      }\n    }\n    return p;\n  }\n  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n    if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n      this.#toggle();\n    }\n  }\n  updateEdited({\n    rect,\n    popupContent\n  }) {\n    this.#updates ||= {\n      contentsObj: this.#contentsObj,\n      richText: this.#richText\n    };\n    if (rect) {\n      this.#position = null;\n    }\n    if (popupContent) {\n      this.#richText = this.#makePopupContent(popupContent);\n      this.#contentsObj = null;\n    }\n    this.#popup?.remove();\n    this.#popup = null;\n  }\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    ({\n      contentsObj: this.#contentsObj,\n      richText: this.#richText\n    } = this.#updates);\n    this.#updates = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#position = null;\n  }\n  #setPosition() {\n    if (this.#position !== null) {\n      return;\n    }\n    const {\n      page: {\n        view\n      },\n      viewport: {\n        rawDims: {\n          pageWidth,\n          pageHeight,\n          pageX,\n          pageY\n        }\n      }\n    } = this.#parent;\n    let useParentRect = !!this.#parentRect;\n    let rect = useParentRect ? this.#parentRect : this.#rect;\n    for (const element of this.#elements) {\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n        rect = element.data.rect;\n        useParentRect = true;\n        break;\n      }\n    }\n    const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n    this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n    const {\n      style\n    } = this.#container;\n    style.left = `${this.#position[0]}%`;\n    style.top = `${this.#position[1]}%`;\n  }\n  #toggle() {\n    this.#pinned = !this.#pinned;\n    if (this.#pinned) {\n      this.#show();\n      this.#container.addEventListener(\"click\", this.#boundToggle);\n      this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n    } else {\n      this.#hide();\n      this.#container.removeEventListener(\"click\", this.#boundToggle);\n      this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n    }\n  }\n  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#setPosition();\n      this.#container.hidden = false;\n      this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\n  }\n  #hide() {\n    this.#container.classList.remove(\"focused\");\n    if (this.#pinned || !this.isVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n    this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n  }\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n  maybeShow() {\n    if (!this.#wasVisible) {\n      return;\n    }\n    if (!this.#popup) {\n      this.#show();\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n  get isVisible() {\n    return this.#container.hidden === false;\n  }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\n    if (this.textContent) {\n      const content = document.createElement(\"div\");\n      content.classList.add(\"annotationTextContent\");\n      content.setAttribute(\"role\", \"comment\");\n      for (const line of this.textContent) {\n        const lineSpan = document.createElement(\"span\");\n        lineSpan.textContent = line;\n        content.append(lineSpan);\n      }\n      this.container.append(content);\n    }\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n    const {\n      data,\n      width,\n      height\n    } = this;\n    const svg = this.svgFactory.create(width, height, true);\n    const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n    svg.append(line);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n    const {\n      data,\n      width,\n      height\n    } = this;\n    const svg = this.svgFactory.create(width, height, true);\n    const borderWidth = data.borderStyle.width;\n    const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n    svg.append(square);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n    const {\n      data,\n      width,\n      height\n    } = this;\n    const svg = this.svgFactory.create(width, height, true);\n    const borderWidth = data.borderStyle.width;\n    const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n    svg.append(circle);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n  render() {\n    this.container.classList.add(this.containerClassName);\n    const {\n      data: {\n        rect,\n        vertices,\n        borderStyle,\n        popupRef\n      },\n      width,\n      height\n    } = this;\n    if (!vertices) {\n      return this.container;\n    }\n    const svg = this.svgFactory.create(width, height, true);\n    let points = [];\n    for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n      const x = vertices[i] - rect[0];\n      const y = rect[3] - vertices[i + 1];\n      points.push(`${x},${y}`);\n    }\n    points = points.join(\" \");\n    const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n    polyline.setAttribute(\"points\", points);\n    polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n    svg.append(polyline);\n    this.container.append(svg);\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    super(parameters);\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\nclass InkAnnotationElement extends AnnotationElement {\n  #polylinesGroupElement = null;\n  #polylines = [];\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"inkAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n    this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n  }\n  #getTransform(rotation, rect) {\n    switch (rotation) {\n      case 90:\n        return {\n          transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0]\n        };\n      case 180:\n        return {\n          transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1]\n        };\n      case 270:\n        return {\n          transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0]\n        };\n      default:\n        return {\n          transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1]\n        };\n    }\n  }\n  render() {\n    this.container.classList.add(this.containerClassName);\n    const {\n      data: {\n        rect,\n        rotation,\n        inkLists,\n        borderStyle,\n        popupRef\n      }\n    } = this;\n    const {\n      transform,\n      width,\n      height\n    } = this.#getTransform(rotation, rect);\n    const svg = this.svgFactory.create(width, height, true);\n    const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n    svg.append(g);\n    g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    g.setAttribute(\"stroke-linecap\", \"round\");\n    g.setAttribute(\"stroke-linejoin\", \"round\");\n    g.setAttribute(\"stroke-miterlimit\", 10);\n    g.setAttribute(\"stroke\", \"transparent\");\n    g.setAttribute(\"fill\", \"transparent\");\n    g.setAttribute(\"transform\", transform);\n    for (let i = 0, ii = inkLists.length; i < ii; i++) {\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n      g.append(polyline);\n    }\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.append(svg);\n    this._editOnDoubleClick();\n    return this.container;\n  }\n  updateEdited(params) {\n    super.updateEdited(params);\n    const {\n      thickness,\n      points,\n      rect\n    } = params;\n    const g = this.#polylinesGroupElement;\n    if (thickness >= 0) {\n      g.setAttribute(\"stroke-width\", thickness || 1);\n    }\n    if (points) {\n      for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n        this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n      }\n    }\n    if (rect) {\n      const {\n        transform,\n        width,\n        height\n      } = this.#getTransform(this.data.rotation, rect);\n      const root = g.parentElement;\n      root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n      g.setAttribute(\"transform\", transform);\n    }\n  }\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"highlightAnnotation\");\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"underlineAnnotation\");\n    return this.container;\n  }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"squigglyAnnotation\");\n    return this.container;\n  }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"strikeoutAnnotation\");\n    return this.container;\n  }\n}\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.annotationEditorType = AnnotationEditorType.STAMP;\n  }\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n    this.container.setAttribute(\"role\", \"img\");\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n    const {\n      file\n    } = this.data;\n    this.filename = file.filename;\n    this.content = file.content;\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      ...file\n    });\n  }\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n    const {\n      container,\n      data\n    } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n    container.append(trigger);\n    return container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\nclass AnnotationLayer {\n  #accessibilityManager = null;\n  #annotationCanvasMap = null;\n  #editableAnnotations = new Map();\n  #structTreeLayer = null;\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    annotationEditorUIManager,\n    page,\n    viewport,\n    structTreeLayer\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.#structTreeLayer = structTreeLayer || null;\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n    this._annotationEditorUIManager = annotationEditorUIManager;\n  }\n  hasEditableAnnotations() {\n    return this.#editableAnnotations.size > 0;\n  }\n  async #appendElement(element, id) {\n    const contentElement = element.firstChild || element;\n    const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n    const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n    if (ariaAttributes) {\n      for (const [key, value] of ariaAttributes) {\n        contentElement.setAttribute(key, value);\n      }\n    }\n    this.div.append(element);\n    this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n  }\n  async render(params) {\n    const {\n      annotations\n    } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\n    const popupToElements = new Map();\n    const elementParams = {\n      data: null,\n      layer,\n      linkService: params.linkService,\n      downloadManager: params.downloadManager,\n      imageResourcesPath: params.imageResourcesPath || \"\",\n      renderForms: params.renderForms !== false,\n      svgFactory: new DOMSVGFactory(),\n      annotationStorage: params.annotationStorage || new AnnotationStorage(),\n      enableScripting: params.enableScripting === true,\n      hasJSActions: params.hasJSActions,\n      fieldObjects: params.fieldObjects,\n      parent: this,\n      elements: null\n    };\n    for (const data of annotations) {\n      if (data.noHTML) {\n        continue;\n      }\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n      if (!isPopupAnnotation) {\n        if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n          continue;\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n      if (!element.isRenderable) {\n        continue;\n      }\n      if (!isPopupAnnotation && data.popupRef) {\n        const elements = popupToElements.get(data.popupRef);\n        if (!elements) {\n          popupToElements.set(data.popupRef, [element]);\n        } else {\n          elements.push(element);\n        }\n      }\n      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      await this.#appendElement(rendered, data.id);\n      if (element._isEditable) {\n        this.#editableAnnotations.set(element.data.id, element);\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\n      }\n    }\n    this.#setAnnotationCanvasMap();\n  }\n  async addLinkAnnotations(annotations, linkService) {\n    const elementParams = {\n      data: null,\n      layer: this.div,\n      linkService,\n      svgFactory: new DOMSVGFactory(),\n      parent: this\n    };\n    for (const data of annotations) {\n      data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n      if (!element.isRenderable) {\n        continue;\n      }\n      const rendered = element.render();\n      await this.#appendElement(rendered, data.id);\n    }\n  }\n  update({\n    viewport\n  }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, {\n      rotation: viewport.rotation\n    });\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\n  }\n  #setAnnotationCanvasMap() {\n    if (!this.#annotationCanvasMap) {\n      return;\n    }\n    const layer = this.div;\n    for (const [id, canvas] of this.#annotationCanvasMap) {\n      const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n      if (!element) {\n        continue;\n      }\n      canvas.className = \"annotationContent\";\n      const {\n        firstChild\n      } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else if (!firstChild.classList.contains(\"annotationContent\")) {\n        firstChild.before(canvas);\n      } else {\n        firstChild.after(canvas);\n      }\n      const editableAnnotation = this.#editableAnnotations.get(id);\n      if (!editableAnnotation) {\n        continue;\n      }\n      if (editableAnnotation._hasNoCanvas) {\n        this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n        editableAnnotation._hasNoCanvas = false;\n      } else {\n        editableAnnotation.canvas = canvas;\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n  static get _defaultBorderStyle() {\n    return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n      width: 1,\n      rawWidth: 1,\n      style: AnnotationBorderStyleType.SOLID,\n      dashArray: [3],\n      horizontalCornerRadius: 0,\n      verticalCornerRadius: 0\n    }));\n  }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n  #color;\n  #content = \"\";\n  #editorDivId = `${this.id}-editor`;\n  #editModeAC = null;\n  #fontSize;\n  static _freeTextDefaultContent = \"\";\n  static _internalPadding = 0;\n  static _defaultColor = null;\n  static _defaultFontSize = 10;\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n    const arrowChecker = self => self.isEmpty();\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n      bubbles: true\n    }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n      args: [-small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n      args: [-big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n      args: [small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n      args: [big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n      args: [0, -small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n      args: [0, -big],\n      checker: arrowChecker\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n      args: [0, small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n      args: [0, big],\n      checker: arrowChecker\n    }]]));\n  }\n  static _type = \"freetext\";\n  static _editorType = AnnotationEditorType.FREETEXT;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"freeTextEditor\"\n    });\n    this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    const style = getComputedStyle(document.documentElement);\n    this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n  }\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        FreeTextEditor._defaultFontSize = value;\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        FreeTextEditor._defaultColor = value;\n        break;\n    }\n  }\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        this.#updateFontSize(value);\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n  }\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\n      this.#fontSize = size;\n      this.#setEditorDimensions();\n    };\n    const savedFontsize = this.#fontSize;\n    this.addCommands({\n      cmd: setFontsize.bind(this, fontSize),\n      undo: setFontsize.bind(this, savedFontsize),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  #updateColor(color) {\n    const setColor = col => {\n      this.#color = this.editorDiv.style.color = col;\n    };\n    const savedColor = this.#color;\n    this.addCommands({\n      cmd: setColor.bind(this, color),\n      undo: setColor.bind(this, savedColor),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, true);\n  }\n  getInitialTranslation() {\n    const scale = this.parentScale;\n    return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return;\n    }\n    this.parent.setEditingState(false);\n    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n    super.enableEditMode();\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this._isDraggable = false;\n    this.div.removeAttribute(\"aria-activedescendant\");\n    this.#editModeAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#editModeAC);\n    this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n      signal\n    });\n  }\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n    this.parent.setEditingState(true);\n    super.disableEditMode();\n    this.overlayDiv.classList.add(\"enabled\");\n    this.editorDiv.contentEditable = false;\n    this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n    this._isDraggable = true;\n    this.#editModeAC?.abort();\n    this.#editModeAC = null;\n    this.div.focus({\n      preventScroll: true\n    });\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n  }\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    if (event.target !== this.editorDiv) {\n      this.editorDiv.focus();\n    }\n  }\n  onceAdded(focus) {\n    if (this.width) {\n      return;\n    }\n    this.enableEditMode();\n    if (focus) {\n      this.editorDiv.focus();\n    }\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n  remove() {\n    this.isEditing = false;\n    if (this.parent) {\n      this.parent.setEditingState(true);\n      this.parent.div.classList.add(\"freetextEditing\");\n    }\n    super.remove();\n  }\n  #extractText() {\n    const buffer = [];\n    this.editorDiv.normalize();\n    let prevChild = null;\n    for (const child of this.editorDiv.childNodes) {\n      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n        continue;\n      }\n      buffer.push(FreeTextEditor.#getNodeContent(child));\n      prevChild = child;\n    }\n    return buffer.join(\"\\n\");\n  }\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      const {\n        currentLayer,\n        div\n      } = this;\n      const savedDisplay = div.style.display;\n      const savedVisibility = div.classList.contains(\"hidden\");\n      div.classList.remove(\"hidden\");\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n      div.classList.toggle(\"hidden\", savedVisibility);\n    }\n    if (this.rotation % 180 === this.parentRotation % 180) {\n      this.width = rect.width / parentWidth;\n      this.height = rect.height / parentHeight;\n    } else {\n      this.width = rect.height / parentWidth;\n      this.height = rect.width / parentHeight;\n    }\n    this.fixAndSetPosition();\n  }\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n    super.commit();\n    this.disableEditMode();\n    const savedText = this.#content;\n    const newText = this.#content = this.#extractText().trimEnd();\n    if (savedText === newText) {\n      return;\n    }\n    const setText = text => {\n      this.#content = text;\n      if (!text) {\n        this.remove();\n        return;\n      }\n      this.#setContent();\n      this._uiManager.rebuild(this);\n      this.#setEditorDimensions();\n    };\n    this.addCommands({\n      cmd: () => {\n        setText(newText);\n      },\n      undo: () => {\n        setText(savedText);\n      },\n      mustExec: false\n    });\n    this.#setEditorDimensions();\n  }\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n  dblclick(event) {\n    this.enterInEditMode();\n  }\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      event.preventDefault();\n    }\n  }\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this._isCopy || this.annotationElementId) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n    this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n    this.enableEditing();\n    this.editorDiv.contentEditable = true;\n    const {\n      style\n    } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n    style.color = this.#color;\n    this.div.append(this.editorDiv);\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n    if (this._isCopy || this.annotationElementId) {\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        const {\n          position\n        } = this._initialData;\n        let [tx, ty] = this.getInitialTranslation();\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        const [pageX, pageY] = this.pageTranslation;\n        let posX, posY;\n        switch (this.rotation) {\n          case 0:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n            break;\n          case 90:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [ty, -tx];\n            break;\n          case 180:\n            posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [-tx, -ty];\n            break;\n          case 270:\n            posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n            [tx, ty] = [-ty, tx];\n            break;\n        }\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n      } else {\n        this._moveAfterPaste(baseX, baseY);\n      }\n      this.#setContent();\n      this._isDraggable = true;\n      this.editorDiv.contentEditable = false;\n    } else {\n      this._isDraggable = false;\n      this.editorDiv.contentEditable = true;\n    }\n    return this.div;\n  }\n  static #getNodeContent(node) {\n    return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n  }\n  editorDivPaste(event) {\n    const clipboardData = event.clipboardData || window.clipboardData;\n    const {\n      types\n    } = clipboardData;\n    if (types.length === 1 && types[0] === \"text/plain\") {\n      return;\n    }\n    event.preventDefault();\n    const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n    if (!paste) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (!selection.rangeCount) {\n      return;\n    }\n    this.editorDiv.normalize();\n    selection.deleteFromDocument();\n    const range = selection.getRangeAt(0);\n    if (!paste.includes(\"\\n\")) {\n      range.insertNode(document.createTextNode(paste));\n      this.editorDiv.normalize();\n      selection.collapseToStart();\n      return;\n    }\n    const {\n      startContainer,\n      startOffset\n    } = range;\n    const bufferBefore = [];\n    const bufferAfter = [];\n    if (startContainer.nodeType === Node.TEXT_NODE) {\n      const parent = startContainer.parentElement;\n      bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n      if (parent !== this.editorDiv) {\n        let buffer = bufferBefore;\n        for (const child of this.editorDiv.childNodes) {\n          if (child === parent) {\n            buffer = bufferAfter;\n            continue;\n          }\n          buffer.push(FreeTextEditor.#getNodeContent(child));\n        }\n      }\n      bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n    } else if (startContainer === this.editorDiv) {\n      let buffer = bufferBefore;\n      let i = 0;\n      for (const child of this.editorDiv.childNodes) {\n        if (i++ === startOffset) {\n          buffer = bufferAfter;\n        }\n        buffer.push(FreeTextEditor.#getNodeContent(child));\n      }\n    }\n    this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n    this.#setContent();\n    const newRange = new Range();\n    let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n    for (const {\n      firstChild\n    } of this.editorDiv.childNodes) {\n      if (firstChild.nodeType === Node.TEXT_NODE) {\n        const length = firstChild.nodeValue.length;\n        if (beforeLength <= length) {\n          newRange.setStart(firstChild, beforeLength);\n          newRange.setEnd(firstChild, beforeLength);\n          break;\n        }\n        beforeLength -= length;\n      }\n    }\n    selection.removeAllRanges();\n    selection.addRange(newRange);\n  }\n  #setContent() {\n    this.editorDiv.replaceChildren();\n    if (!this.#content) {\n      return;\n    }\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n      this.editorDiv.append(div);\n    }\n  }\n  #serializeContent() {\n    return this.#content.replaceAll(\"\\xa0\", \" \");\n  }\n  static #deserializeContent(content) {\n    return content.replaceAll(\" \", \"\\xa0\");\n  }\n  get contentDiv() {\n    return this.editorDiv;\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: {\n            fontSize,\n            fontColor\n          },\n          rect,\n          rotation,\n          id,\n          popupRef\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      if (!textContent || textContent.length === 0) {\n        return null;\n      }\n      initialData = data = {\n        annotationType: AnnotationEditorType.FREETEXT,\n        color: Array.from(fontColor),\n        fontSize,\n        value: textContent.join(\"\\n\"),\n        position: textPosition,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#fontSize = data.fontSize;\n    editor.#color = Util.makeHexColor(...data.color);\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    return editor;\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    const rect = this.getRect(padding, padding);\n    const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n    const serialized = {\n      annotationType: AnnotationEditorType.FREETEXT,\n      color,\n      fontSize: this.#fontSize,\n      value: this.#serializeContent(),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      serialized.isCopy = true;\n      return serialized;\n    }\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      value,\n      fontSize,\n      color,\n      pageIndex\n    } = this._initialData;\n    return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n  }\n  renderAnnotationElement(annotation) {\n    const content = super.renderAnnotationElement(annotation);\n    if (this.deleted) {\n      return content;\n    }\n    const {\n      style\n    } = content;\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n    style.color = this.#color;\n    content.replaceChildren();\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n      content.append(div);\n    }\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    annotation.updateEdited({\n      rect: this.getRect(padding, padding),\n      popupContent: this.#content\n    });\n    return content;\n  }\n  resetAnnotationElement(annotation) {\n    super.resetAnnotationElement(annotation);\n    annotation.resetEdited();\n  }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n  static PRECISION = 1e-4;\n  toSVGPath() {\n    unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n  }\n  get box() {\n    unreachable(\"Abstract getter `box` must be implemented.\");\n  }\n  serialize(_bbox, _rotation) {\n    unreachable(\"Abstract method `serialize` must be implemented.\");\n  }\n  static _rescale(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i] * sx;\n      dest[i + 1] = ty + src[i + 1] * sy;\n    }\n    return dest;\n  }\n  static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i + 1] * sx;\n      dest[i + 1] = ty + src[i] * sy;\n    }\n    return dest;\n  }\n  static _translate(src, tx, ty, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i];\n      dest[i + 1] = ty + src[i + 1];\n    }\n    return dest;\n  }\n  static svgRound(x) {\n    return Math.round(x * 10000);\n  }\n  static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y / parentWidth, x / parentHeight];\n      case 180:\n        return [1 - x / parentWidth, 1 - y / parentHeight];\n      case 270:\n        return [y / parentWidth, 1 - x / parentHeight];\n      default:\n        return [x / parentWidth, y / parentHeight];\n    }\n  }\n  static _normalizePagePoint(x, y, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y, x];\n      case 180:\n        return [1 - x, 1 - y];\n      case 270:\n        return [y, 1 - x];\n      default:\n        return [x, y];\n    }\n  }\n  static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n    return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n  }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n  #box;\n  #bottom = [];\n  #innerMargin;\n  #isLTR;\n  #top = [];\n  #last = new Float32Array(18);\n  #lastX;\n  #lastY;\n  #min;\n  #min_dist;\n  #scaleFactor;\n  #thickness;\n  #points = [];\n  static #MIN_DIST = 8;\n  static #MIN_DIFF = 2;\n  static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n  constructor({\n    x,\n    y\n  }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    this.#box = box;\n    this.#thickness = thickness * scaleFactor;\n    this.#isLTR = isLTR;\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n    this.#innerMargin = innerMargin;\n    this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n    this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n    this.#scaleFactor = scaleFactor;\n    this.#points.push(x, y);\n  }\n  isEmpty() {\n    return isNaN(this.#last[8]);\n  }\n  #getLastCoords() {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [x, y, width, height] = this.#box;\n    return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n  }\n  add({\n    x,\n    y\n  }) {\n    this.#lastX = x;\n    this.#lastY = y;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(diffX, diffY);\n    if (d < this.#min) {\n      return false;\n    }\n    const diffD = d - this.#min_dist;\n    const K = diffD / d;\n    const shiftX = K * diffX;\n    const shiftY = K * diffY;\n    let x0 = x1;\n    let y0 = y1;\n    x1 = x2;\n    y1 = y2;\n    x2 += shiftX;\n    y2 += shiftY;\n    this.#points?.push(x, y);\n    const nX = -shiftY / diffD;\n    const nY = shiftX / diffD;\n    const thX = nX * this.#thickness;\n    const thY = nY * this.#thickness;\n    this.#last.set(this.#last.subarray(2, 8), 0);\n    this.#last.set([x2 + thX, y2 + thY], 4);\n    this.#last.set(this.#last.subarray(14, 18), 12);\n    this.#last.set([x2 - thX, y2 - thY], 16);\n    if (isNaN(this.#last[6])) {\n      if (this.#top.length === 0) {\n        this.#last.set([x1 + thX, y1 + thY], 2);\n        this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n        this.#last.set([x1 - thX, y1 - thY], 14);\n        this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n      }\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n      return !this.isEmpty();\n    }\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n    const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n    if (angle < Math.PI / 2) {\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n      this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n      this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n      return true;\n    }\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n    this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n    this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n    return true;\n  }\n  toSVGPath() {\n    if (this.isEmpty()) {\n      return \"\";\n    }\n    const top = this.#top;\n    const bottom = this.#bottom;\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\n      return this.#toSVGPathTwoPoints();\n    }\n    const buffer = [];\n    buffer.push(`M${top[4]} ${top[5]}`);\n    for (let i = 6; i < top.length; i += 6) {\n      if (isNaN(top[i])) {\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n      } else {\n        buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n      }\n    }\n    this.#toSVGPathEnd(buffer);\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      if (isNaN(bottom[i])) {\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n      } else {\n        buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n      }\n    }\n    this.#toSVGPathStart(buffer);\n    return buffer.join(\" \");\n  }\n  #toSVGPathTwoPoints() {\n    const [x, y, width, height] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n  }\n  #toSVGPathStart(buffer) {\n    const bottom = this.#bottom;\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n  }\n  #toSVGPathEnd(buffer) {\n    const [x, y, width, height] = this.#box;\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n  }\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n  }\n  getOutlines() {\n    const top = this.#top;\n    const bottom = this.#bottom;\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const points = new Float32Array((this.#points?.length ?? 0) + 2);\n    for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n      points[i] = (this.#points[i] - layerX) / layerWidth;\n      points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n    }\n    points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n    points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n    if (isNaN(last[6]) && !this.isEmpty()) {\n      return this.#getOutlineTwoPoints(points);\n    }\n    const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n    let N = top.length;\n    for (let i = 0; i < N; i += 2) {\n      if (isNaN(top[i])) {\n        outline[i] = outline[i + 1] = NaN;\n        continue;\n      }\n      outline[i] = top[i];\n      outline[i + 1] = top[i + 1];\n    }\n    N = this.#getOutlineEnd(outline, N);\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      for (let j = 0; j < 6; j += 2) {\n        if (isNaN(bottom[i + j])) {\n          outline[N] = outline[N + 1] = NaN;\n          N += 2;\n          continue;\n        }\n        outline[N] = bottom[i + j];\n        outline[N + 1] = bottom[i + j + 1];\n        N += 2;\n      }\n    }\n    this.#getOutlineStart(outline, N);\n    return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n  }\n  #getOutlineTwoPoints(points) {\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    const outline = new Float32Array(36);\n    outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n    return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n  }\n  #getOutlineStart(outline, pos) {\n    const bottom = this.#bottom;\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n    return pos += 6;\n  }\n  #getOutlineEnd(outline, pos) {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n    return pos += 24;\n  }\n}\nclass FreeDrawOutline extends Outline {\n  #box;\n  #bbox = new Float32Array(4);\n  #innerMargin;\n  #isLTR;\n  #points;\n  #scaleFactor;\n  #outline;\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    super();\n    this.#outline = outline;\n    this.#points = points;\n    this.#box = box;\n    this.#scaleFactor = scaleFactor;\n    this.#innerMargin = innerMargin;\n    this.#isLTR = isLTR;\n    this.lastPoint = [NaN, NaN];\n    this.#computeMinMax(isLTR);\n    const [x, y, width, height] = this.#bbox;\n    for (let i = 0, ii = outline.length; i < ii; i += 2) {\n      outline[i] = (outline[i] - x) / width;\n      outline[i + 1] = (outline[i + 1] - y) / height;\n    }\n    for (let i = 0, ii = points.length; i < ii; i += 2) {\n      points[i] = (points[i] - x) / width;\n      points[i + 1] = (points[i + 1] - y) / height;\n    }\n  }\n  toSVGPath() {\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n    for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n      if (isNaN(this.#outline[i])) {\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n        continue;\n      }\n      buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n    }\n    buffer.push(\"Z\");\n    return buffer.join(\" \");\n  }\n  serialize([blX, blY, trX, trY], rotation) {\n    const width = trX - blX;\n    const height = trY - blY;\n    let outline;\n    let points;\n    switch (rotation) {\n      case 0:\n        outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n        points = Outline._rescale(this.#points, blX, trY, width, -height);\n        break;\n      case 90:\n        outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n        points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n        break;\n      case 180:\n        outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n        points = Outline._rescale(this.#points, trX, blY, -width, height);\n        break;\n      case 270:\n        outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n        points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n        break;\n    }\n    return {\n      outline: Array.from(outline),\n      points: [Array.from(points)]\n    };\n  }\n  #computeMinMax(isLTR) {\n    const outline = this.#outline;\n    let lastX = outline[4];\n    let lastY = outline[5];\n    let minX = lastX;\n    let minY = lastY;\n    let maxX = lastX;\n    let maxY = lastY;\n    let lastPointX = lastX;\n    let lastPointY = lastY;\n    const ltrCallback = isLTR ? Math.max : Math.min;\n    for (let i = 6, ii = outline.length; i < ii; i += 6) {\n      if (isNaN(outline[i])) {\n        minX = Math.min(minX, outline[i + 4]);\n        minY = Math.min(minY, outline[i + 5]);\n        maxX = Math.max(maxX, outline[i + 4]);\n        maxY = Math.max(maxY, outline[i + 5]);\n        if (lastPointY < outline[i + 5]) {\n          lastPointX = outline[i + 4];\n          lastPointY = outline[i + 5];\n        } else if (lastPointY === outline[i + 5]) {\n          lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n        }\n      } else {\n        const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n        minX = Math.min(minX, bbox[0]);\n        minY = Math.min(minY, bbox[1]);\n        maxX = Math.max(maxX, bbox[2]);\n        maxY = Math.max(maxY, bbox[3]);\n        if (lastPointY < bbox[3]) {\n          lastPointX = bbox[2];\n          lastPointY = bbox[3];\n        } else if (lastPointY === bbox[3]) {\n          lastPointX = ltrCallback(lastPointX, bbox[2]);\n        }\n      }\n      lastX = outline[i + 4];\n      lastY = outline[i + 5];\n    }\n    const bbox = this.#bbox;\n    bbox[0] = minX - this.#innerMargin;\n    bbox[1] = minY - this.#innerMargin;\n    bbox[2] = maxX - minX + 2 * this.#innerMargin;\n    bbox[3] = maxY - minY + 2 * this.#innerMargin;\n    this.lastPoint = [lastPointX, lastPointY];\n  }\n  get box() {\n    return this.#bbox;\n  }\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n  }\n  getNewOutline(thickness, innerMargin) {\n    const [x, y, width, height] = this.#bbox;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const sx = width * layerWidth;\n    const sy = height * layerHeight;\n    const tx = x * layerWidth + layerX;\n    const ty = y * layerHeight + layerY;\n    const outliner = this.newOutliner({\n      x: this.#points[0] * sx + tx,\n      y: this.#points[1] * sy + ty\n    }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n    for (let i = 2; i < this.#points.length; i += 2) {\n      outliner.add({\n        x: this.#points[i] * sx + tx,\n        y: this.#points[i + 1] * sy + ty\n      });\n    }\n    return outliner.getOutlines();\n  }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n  #box;\n  #lastPoint;\n  #verticalEdges = [];\n  #intervals = [];\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    const NUMBER_OF_DIGITS = 4;\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n    for (const {\n      x,\n      y,\n      width,\n      height\n    } of boxes) {\n      const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n      const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n      const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n      const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n      const left = [x1, y1, y2, true];\n      const right = [x2, y1, y2, false];\n      this.#verticalEdges.push(left, right);\n      minX = Math.min(minX, x1);\n      maxX = Math.max(maxX, x2);\n      minY = Math.min(minY, y1);\n      maxY = Math.max(maxY, y2);\n    }\n    const bboxWidth = maxX - minX + 2 * innerMargin;\n    const bboxHeight = maxY - minY + 2 * innerMargin;\n    const shiftedMinX = minX - innerMargin;\n    const shiftedMinY = minY - innerMargin;\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n    const lastPoint = [lastEdge[0], lastEdge[2]];\n    for (const edge of this.#verticalEdges) {\n      const [x, y1, y2] = edge;\n      edge[0] = (x - shiftedMinX) / bboxWidth;\n      edge[1] = (y1 - shiftedMinY) / bboxHeight;\n      edge[2] = (y2 - shiftedMinY) / bboxHeight;\n    }\n    this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n    this.#lastPoint = lastPoint;\n  }\n  getOutlines() {\n    this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n    const outlineVerticalEdges = [];\n    for (const edge of this.#verticalEdges) {\n      if (edge[3]) {\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n        this.#insert(edge);\n      } else {\n        this.#remove(edge);\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n      }\n    }\n    return this.#getOutlines(outlineVerticalEdges);\n  }\n  #getOutlines(outlineVerticalEdges) {\n    const edges = [];\n    const allEdges = new Set();\n    for (const edge of outlineVerticalEdges) {\n      const [x, y1, y2] = edge;\n      edges.push([x, y1, edge], [x, y2, edge]);\n    }\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n    for (let i = 0, ii = edges.length; i < ii; i += 2) {\n      const edge1 = edges[i][2];\n      const edge2 = edges[i + 1][2];\n      edge1.push(edge2);\n      edge2.push(edge1);\n      allEdges.add(edge1);\n      allEdges.add(edge2);\n    }\n    const outlines = [];\n    let outline;\n    while (allEdges.size > 0) {\n      const edge = allEdges.values().next().value;\n      let [x, y1, y2, edge1, edge2] = edge;\n      allEdges.delete(edge);\n      let lastPointX = x;\n      let lastPointY = y1;\n      outline = [x, y2];\n      outlines.push(outline);\n      while (true) {\n        let e;\n        if (allEdges.has(edge1)) {\n          e = edge1;\n        } else if (allEdges.has(edge2)) {\n          e = edge2;\n        } else {\n          break;\n        }\n        allEdges.delete(e);\n        [x, y1, y2, edge1, edge2] = e;\n        if (lastPointX !== x) {\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n          lastPointX = x;\n        }\n        lastPointY = lastPointY === y1 ? y2 : y1;\n      }\n      outline.push(lastPointX, lastPointY);\n    }\n    return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n  }\n  #binarySearch(y) {\n    const array = this.#intervals;\n    let start = 0;\n    let end = array.length - 1;\n    while (start <= end) {\n      const middle = start + end >> 1;\n      const y1 = array[middle][0];\n      if (y1 === y) {\n        return middle;\n      }\n      if (y1 < y) {\n        start = middle + 1;\n      } else {\n        end = middle - 1;\n      }\n    }\n    return end + 1;\n  }\n  #insert([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    this.#intervals.splice(index, 0, [y1, y2]);\n  }\n  #remove([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    for (let i = index; i < this.#intervals.length; i++) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n    for (let i = index - 1; i >= 0; i--) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n  }\n  #breakEdge(edge) {\n    const [x, y1, y2] = edge;\n    const results = [[x, y1, y2]];\n    const index = this.#binarySearch(y2);\n    for (let i = 0; i < index; i++) {\n      const [start, end] = this.#intervals[i];\n      for (let j = 0, jj = results.length; j < jj; j++) {\n        const [, y3, y4] = results[j];\n        if (end <= y3 || y4 <= start) {\n          continue;\n        }\n        if (y3 >= start) {\n          if (y4 > end) {\n            results[j][1] = end;\n          } else {\n            if (jj === 1) {\n              return [];\n            }\n            results.splice(j, 1);\n            j--;\n            jj--;\n          }\n          continue;\n        }\n        results[j][2] = start;\n        if (y4 > end) {\n          results.push([x, end, y4]);\n        }\n      }\n    }\n    return results;\n  }\n}\nclass HighlightOutline extends Outline {\n  #box;\n  #outlines;\n  constructor(outlines, box, lastPoint) {\n    super();\n    this.#outlines = outlines;\n    this.#box = box;\n    this.lastPoint = lastPoint;\n  }\n  toSVGPath() {\n    const buffer = [];\n    for (const polygon of this.#outlines) {\n      let [prevX, prevY] = polygon;\n      buffer.push(`M${prevX} ${prevY}`);\n      for (let i = 2; i < polygon.length; i += 2) {\n        const x = polygon[i];\n        const y = polygon[i + 1];\n        if (x === prevX) {\n          buffer.push(`V${y}`);\n          prevY = y;\n        } else if (y === prevY) {\n          buffer.push(`H${x}`);\n          prevX = x;\n        }\n      }\n      buffer.push(\"Z\");\n    }\n    return buffer.join(\" \");\n  }\n  serialize([blX, blY, trX, trY], _rotation) {\n    const outlines = [];\n    const width = trX - blX;\n    const height = trY - blY;\n    for (const outline of this.#outlines) {\n      const points = new Array(outline.length);\n      for (let i = 0; i < outline.length; i += 2) {\n        points[i] = blX + outline[i] * width;\n        points[i + 1] = trY - outline[i + 1] * height;\n      }\n      outlines.push(points);\n    }\n    return outlines;\n  }\n  get box() {\n    return this.#box;\n  }\n  get classNamesForOutlining() {\n    return [\"highlightOutline\"];\n  }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n  }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n  }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n  #button = null;\n  #buttonSwatch = null;\n  #defaultColor;\n  #dropdown = null;\n  #dropdownWasFromKeyboard = false;\n  #isMainColorPicker = false;\n  #editor = null;\n  #eventBus;\n  #openDropdownAC = null;\n  #uiManager = null;\n  #type;\n  static #l10nColor = null;\n  static get _keyboardManager() {\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n  }\n  constructor({\n    editor = null,\n    uiManager = null\n  }) {\n    if (editor) {\n      this.#isMainColorPicker = false;\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n      this.#editor = editor;\n    } else {\n      this.#isMainColorPicker = true;\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n    }\n    this.#uiManager = editor?._uiManager || uiManager;\n    this.#eventBus = this.#uiManager._eventBus;\n    this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n    ColorPicker.#l10nColor ||= Object.freeze({\n      blue: \"pdfjs-editor-colorpicker-blue\",\n      green: \"pdfjs-editor-colorpicker-green\",\n      pink: \"pdfjs-editor-colorpicker-pink\",\n      red: \"pdfjs-editor-colorpicker-red\",\n      yellow: \"pdfjs-editor-colorpicker-yellow\"\n    });\n  }\n  renderButton() {\n    const button = this.#button = document.createElement(\"button\");\n    button.className = \"colorPicker\";\n    button.tabIndex = \"0\";\n    button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n    button.setAttribute(\"aria-haspopup\", true);\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n      signal\n    });\n    button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n      signal\n    });\n    const swatch = this.#buttonSwatch = document.createElement(\"span\");\n    swatch.className = \"swatch\";\n    swatch.setAttribute(\"aria-hidden\", true);\n    swatch.style.backgroundColor = this.#defaultColor;\n    button.append(swatch);\n    return button;\n  }\n  renderMainDropdown() {\n    const dropdown = this.#dropdown = this.#getDropdownRoot();\n    dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n    dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n    return dropdown;\n  }\n  #getDropdownRoot() {\n    const div = document.createElement(\"div\");\n    const signal = this.#uiManager._signal;\n    div.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    div.className = \"dropdown\";\n    div.role = \"listbox\";\n    div.setAttribute(\"aria-multiselectable\", false);\n    div.setAttribute(\"aria-orientation\", \"vertical\");\n    div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n    for (const [name, color] of this.#uiManager.highlightColors) {\n      const button = document.createElement(\"button\");\n      button.tabIndex = \"0\";\n      button.role = \"option\";\n      button.setAttribute(\"data-color\", color);\n      button.title = name;\n      button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n      const swatch = document.createElement(\"span\");\n      button.append(swatch);\n      swatch.className = \"swatch\";\n      swatch.style.backgroundColor = color;\n      button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n      button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n        signal\n      });\n      div.append(button);\n    }\n    div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n      signal\n    });\n    return div;\n  }\n  #colorSelect(color, event) {\n    event.stopPropagation();\n    this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n      source: this,\n      type: this.#type,\n      value: color\n    });\n  }\n  _colorSelectFromKeyboard(event) {\n    if (event.target === this.#button) {\n      this.#openDropdown(event);\n      return;\n    }\n    const color = event.target.getAttribute(\"data-color\");\n    if (!color) {\n      return;\n    }\n    this.#colorSelect(color, event);\n  }\n  _moveToNext(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    if (event.target === this.#button) {\n      this.#dropdown.firstChild?.focus();\n      return;\n    }\n    event.target.nextSibling?.focus();\n  }\n  _moveToPrevious(event) {\n    if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n      if (this.#isDropdownVisible) {\n        this._hideDropdownFromKeyboard();\n      }\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n    }\n    event.target.previousSibling?.focus();\n  }\n  _moveToBeginning(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.firstChild?.focus();\n  }\n  _moveToEnd(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.lastChild?.focus();\n  }\n  #keyDown(event) {\n    ColorPicker._keyboardManager.exec(this, event);\n  }\n  #openDropdown(event) {\n    if (this.#isDropdownVisible) {\n      this.hideDropdown();\n      return;\n    }\n    this.#dropdownWasFromKeyboard = event.detail === 0;\n    if (!this.#openDropdownAC) {\n      this.#openDropdownAC = new AbortController();\n      window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n        signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n      });\n    }\n    if (this.#dropdown) {\n      this.#dropdown.classList.remove(\"hidden\");\n      return;\n    }\n    const root = this.#dropdown = this.#getDropdownRoot();\n    this.#button.append(root);\n  }\n  #pointerDown(event) {\n    if (this.#dropdown?.contains(event.target)) {\n      return;\n    }\n    this.hideDropdown();\n  }\n  hideDropdown() {\n    this.#dropdown?.classList.add(\"hidden\");\n    this.#openDropdownAC?.abort();\n    this.#openDropdownAC = null;\n  }\n  get #isDropdownVisible() {\n    return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n  }\n  _hideDropdownFromKeyboard() {\n    if (this.#isMainColorPicker) {\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#editor?.unselect();\n      return;\n    }\n    this.hideDropdown();\n    this.#button.focus({\n      preventScroll: true,\n      focusVisible: this.#dropdownWasFromKeyboard\n    });\n  }\n  updateColor(color) {\n    if (this.#buttonSwatch) {\n      this.#buttonSwatch.style.backgroundColor = color;\n    }\n    if (!this.#dropdown) {\n      return;\n    }\n    const i = this.#uiManager.highlightColors.values();\n    for (const child of this.#dropdown.children) {\n      child.setAttribute(\"aria-selected\", i.next().value === color);\n    }\n  }\n  destroy() {\n    this.#button?.remove();\n    this.#button = null;\n    this.#buttonSwatch = null;\n    this.#dropdown?.remove();\n    this.#dropdown = null;\n  }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n  #anchorNode = null;\n  #anchorOffset = 0;\n  #boxes;\n  #clipPathId = null;\n  #colorPicker = null;\n  #focusOutlines = null;\n  #focusNode = null;\n  #focusOffset = 0;\n  #highlightDiv = null;\n  #highlightOutlines = null;\n  #id = null;\n  #isFreeHighlight = false;\n  #lastPoint = null;\n  #opacity;\n  #outlineId = null;\n  #text = \"\";\n  #thickness;\n  #methodOfCreation = \"\";\n  static _defaultColor = null;\n  static _defaultOpacity = 1;\n  static _defaultThickness = 12;\n  static _type = \"highlight\";\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\n  static _freeHighlightId = -1;\n  static _freeHighlight = null;\n  static _freeHighlightClipId = \"\";\n  static get _keyboardManager() {\n    const proto = HighlightEditor.prototype;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n      args: [0]\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n      args: [1]\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n      args: [2]\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n      args: [3]\n    }]]));\n  }\n  constructor(params) {\n    super({\n      ...params,\n      name: \"highlightEditor\"\n    });\n    this.color = params.color || HighlightEditor._defaultColor;\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n    this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n    this.#boxes = params.boxes || null;\n    this.#methodOfCreation = params.methodOfCreation || \"\";\n    this.#text = params.text || \"\";\n    this._isDraggable = false;\n    this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n    if (params.highlightId > -1) {\n      this.#isFreeHighlight = true;\n      this.#createFreeOutlines(params);\n      this.#addToDrawLayer();\n    } else if (this.#boxes) {\n      this.#anchorNode = params.anchorNode;\n      this.#anchorOffset = params.anchorOffset;\n      this.#focusNode = params.focusNode;\n      this.#focusOffset = params.focusOffset;\n      this.#createOutlines();\n      this.#addToDrawLayer();\n      this.rotate(this.rotation);\n    }\n  }\n  get telemetryInitialData() {\n    return {\n      action: \"added\",\n      type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n      color: this._uiManager.highlightColorNames.get(this.color),\n      thickness: this.#thickness,\n      methodOfCreation: this.#methodOfCreation\n    };\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"highlight\",\n      color: this._uiManager.highlightColorNames.get(this.color)\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    return {\n      numberOfColors: data.get(\"color\").size\n    };\n  }\n  #createOutlines() {\n    const outliner = new HighlightOutliner(this.#boxes, 0.001);\n    this.#highlightOutlines = outliner.getOutlines();\n    [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n    const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n    this.#focusOutlines = outlinerForOutline.getOutlines();\n    const {\n      lastPoint\n    } = this.#focusOutlines;\n    this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n  }\n  #createFreeOutlines({\n    highlightOutlines,\n    highlightId,\n    clipPathId\n  }) {\n    this.#highlightOutlines = highlightOutlines;\n    const extraThickness = 1.5;\n    this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n    if (highlightId >= 0) {\n      this.#id = highlightId;\n      this.#clipPathId = clipPathId;\n      this.parent.drawLayer.finalizeDraw(highlightId, {\n        bbox: highlightOutlines.box,\n        path: {\n          d: highlightOutlines.toSVGPath()\n        }\n      });\n      this.#outlineId = this.parent.drawLayer.drawOutline({\n        rootClass: {\n          highlightOutline: true,\n          free: true\n        },\n        bbox: this.#focusOutlines.box,\n        path: {\n          d: this.#focusOutlines.toSVGPath()\n        }\n      }, true);\n    } else if (this.parent) {\n      const angle = this.parent.viewport.rotation;\n      this.parent.drawLayer.updateProperties(this.#id, {\n        bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n        path: {\n          d: highlightOutlines.toSVGPath()\n        }\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n        path: {\n          d: this.#focusOutlines.toSVGPath()\n        }\n      });\n    }\n    const [x, y, width, height] = highlightOutlines.box;\n    switch (this.rotation) {\n      case 0:\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 90:\n        {\n          const [pageWidth, pageHeight] = this.parentDimensions;\n          this.x = y;\n          this.y = 1 - x;\n          this.width = width * pageHeight / pageWidth;\n          this.height = height * pageWidth / pageHeight;\n          break;\n        }\n      case 180:\n        this.x = 1 - x;\n        this.y = 1 - y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 270:\n        {\n          const [pageWidth, pageHeight] = this.parentDimensions;\n          this.x = 1 - y;\n          this.y = x;\n          this.width = width * pageHeight / pageWidth;\n          this.height = height * pageWidth / pageHeight;\n          break;\n        }\n    }\n    const {\n      lastPoint\n    } = this.#focusOutlines;\n    this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n  }\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        HighlightEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        HighlightEditor._defaultThickness = value;\n        break;\n    }\n  }\n  translateInPage(x, y) {}\n  get toolbarPosition() {\n    return this.#lastPoint;\n  }\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        this.#updateThickness(value);\n        break;\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n  }\n  #updateColor(color) {\n    const setColorAndOpacity = (col, opa) => {\n      this.color = col;\n      this.#opacity = opa;\n      this.parent?.drawLayer.updateProperties(this.#id, {\n        root: {\n          fill: col,\n          \"fill-opacity\": opa\n        }\n      });\n      this.#colorPicker?.updateColor(col);\n    };\n    const savedColor = this.color;\n    const savedOpacity = this.#opacity;\n    this.addCommands({\n      cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n    this._reportTelemetry({\n      action: \"color_changed\",\n      color: this._uiManager.highlightColorNames.get(color)\n    }, true);\n  }\n  #updateThickness(thickness) {\n    const savedThickness = this.#thickness;\n    const setThickness = th => {\n      this.#thickness = th;\n      this.#changeThickness(th);\n    };\n    this.addCommands({\n      cmd: setThickness.bind(this, thickness),\n      undo: setThickness.bind(this, savedThickness),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n    this._reportTelemetry({\n      action: \"thickness_changed\",\n      thickness\n    }, true);\n  }\n  async addEditToolbar() {\n    const toolbar = await super.addEditToolbar();\n    if (!toolbar) {\n      return null;\n    }\n    if (this._uiManager.highlightColors) {\n      this.#colorPicker = new ColorPicker({\n        editor: this\n      });\n      toolbar.addColorPicker(this.#colorPicker);\n    }\n    return toolbar;\n  }\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n  fixAndSetPosition() {\n    return super.fixAndSetPosition(this.#getRotation());\n  }\n  getBaseTranslation() {\n    return [0, 0];\n  }\n  getRect(tx, ty) {\n    return super.getRect(tx, ty, this.#getRotation());\n  }\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    if (focus) {\n      this.div.focus();\n    }\n  }\n  remove() {\n    this.#cleanDrawLayer();\n    this._reportTelemetry({\n      action: \"deleted\"\n    });\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    this.#addToDrawLayer();\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this.#addToDrawLayer(parent);\n      mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    this.show(this._isVisible);\n    if (mustBeSelected) {\n      this.select();\n    }\n  }\n  #changeThickness(thickness) {\n    if (!this.#isFreeHighlight) {\n      return;\n    }\n    this.#createFreeOutlines({\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n    });\n    this.fixAndSetPosition();\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n  }\n  #cleanDrawLayer() {\n    if (this.#id === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this.#id);\n    this.#id = null;\n    this.parent.drawLayer.remove(this.#outlineId);\n    this.#outlineId = null;\n  }\n  #addToDrawLayer(parent = this.parent) {\n    if (this.#id !== null) {\n      return;\n    }\n    ({\n      id: this.#id,\n      clipPathId: this.#clipPathId\n    } = parent.drawLayer.draw({\n      bbox: this.#highlightOutlines.box,\n      root: {\n        viewBox: \"0 0 1 1\",\n        fill: this.color,\n        \"fill-opacity\": this.#opacity\n      },\n      rootClass: {\n        highlight: true,\n        free: this.#isFreeHighlight\n      },\n      path: {\n        d: this.#highlightOutlines.toSVGPath()\n      }\n    }, false, true));\n    this.#outlineId = parent.drawLayer.drawOutline({\n      rootClass: {\n        highlightOutline: true,\n        free: this.#isFreeHighlight\n      },\n      bbox: this.#focusOutlines.box,\n      path: {\n        d: this.#focusOutlines.toSVGPath()\n      }\n    }, this.#isFreeHighlight);\n    if (this.#highlightDiv) {\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\n    }\n  }\n  static #rotateBbox([x, y, width, height], angle) {\n    switch (angle) {\n      case 90:\n        return [1 - y - height, x, height, width];\n      case 180:\n        return [1 - x - width, 1 - y - height, width, height];\n      case 270:\n        return [y, 1 - x - width, height, width];\n    }\n    return [x, y, width, height];\n  }\n  rotate(angle) {\n    const {\n      drawLayer\n    } = this.parent;\n    let box;\n    if (this.#isFreeHighlight) {\n      angle = (angle - this.rotation + 360) % 360;\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n    } else {\n      box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n    }\n    drawLayer.updateProperties(this.#id, {\n      bbox: box,\n      root: {\n        \"data-main-rotation\": angle\n      }\n    });\n    drawLayer.updateProperties(this.#outlineId, {\n      bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n      root: {\n        \"data-main-rotation\": angle\n      }\n    });\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    const div = super.render();\n    if (this.#text) {\n      div.setAttribute(\"aria-label\", this.#text);\n      div.setAttribute(\"role\", \"mark\");\n    }\n    if (this.#isFreeHighlight) {\n      div.classList.add(\"free\");\n    } else {\n      this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n        signal: this._uiManager._signal\n      });\n    }\n    const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n    div.append(highlightDiv);\n    highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n    highlightDiv.className = \"internal\";\n    highlightDiv.style.clipPath = this.#clipPathId;\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n    bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n    this.enableEditing();\n    return div;\n  }\n  pointerover() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: true\n        }\n      });\n    }\n  }\n  pointerleave() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: false\n        }\n      });\n    }\n  }\n  #keydown(event) {\n    HighlightEditor._keyboardManager.exec(this, event);\n  }\n  _moveCaret(direction) {\n    this.parent.unselect(this);\n    switch (direction) {\n      case 0:\n      case 2:\n        this.#setCaret(true);\n        break;\n      case 1:\n      case 3:\n        this.#setCaret(false);\n        break;\n    }\n  }\n  #setCaret(start) {\n    if (!this.#anchorNode) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (start) {\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\n    } else {\n      selection.setPosition(this.#focusNode, this.#focusOffset);\n    }\n  }\n  select() {\n    super.select();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        hovered: false,\n        selected: true\n      }\n    });\n  }\n  unselect() {\n    super.unselect();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        selected: false\n      }\n    });\n    if (!this.#isFreeHighlight) {\n      this.#setCaret(false);\n    }\n  }\n  get _mustFixPosition() {\n    return !this.#isFreeHighlight;\n  }\n  show(visible = this._isVisible) {\n    super.show(visible);\n    if (this.parent) {\n      this.parent.drawLayer.updateProperties(this.#id, {\n        rootClass: {\n          hidden: !visible\n        }\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hidden: !visible\n        }\n      });\n    }\n  }\n  #getRotation() {\n    return this.#isFreeHighlight ? this.rotation : 0;\n  }\n  #serializeBoxes() {\n    if (this.#isFreeHighlight) {\n      return null;\n    }\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const boxes = this.#boxes;\n    const quadPoints = new Float32Array(boxes.length * 8);\n    let i = 0;\n    for (const {\n      x,\n      y,\n      width,\n      height\n    } of boxes) {\n      const sx = x * pageWidth + pageX;\n      const sy = (1 - y) * pageHeight + pageY;\n      quadPoints[i] = quadPoints[i + 4] = sx;\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n      quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n      i += 8;\n    }\n    return quadPoints;\n  }\n  #serializeOutlines(rect) {\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\n  }\n  static startHighlighting(parent, isLTR, {\n    target: textLayer,\n    x,\n    y\n  }) {\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight\n    } = textLayer.getBoundingClientRect();\n    const ac = new AbortController();\n    const signal = parent.combinedSignal(ac);\n    const pointerUpCallback = e => {\n      ac.abort();\n      this.#endHighlight(parent, e);\n    };\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"pointerdown\", stopEvent, {\n      capture: true,\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n      signal\n    });\n    this._freeHighlight = new FreeHighlightOutliner({\n      x,\n      y\n    }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n    ({\n      id: this._freeHighlightId,\n      clipPathId: this._freeHighlightClipId\n    } = parent.drawLayer.draw({\n      bbox: [0, 0, 1, 1],\n      root: {\n        viewBox: \"0 0 1 1\",\n        fill: this._defaultColor,\n        \"fill-opacity\": this._defaultOpacity\n      },\n      rootClass: {\n        highlight: true,\n        free: true\n      },\n      path: {\n        d: this._freeHighlight.toSVGPath()\n      }\n    }, true, true));\n  }\n  static #highlightMove(parent, event) {\n    if (this._freeHighlight.add(event)) {\n      parent.drawLayer.updateProperties(this._freeHighlightId, {\n        path: {\n          d: this._freeHighlight.toSVGPath()\n        }\n      });\n    }\n  }\n  static #endHighlight(parent, event) {\n    if (!this._freeHighlight.isEmpty()) {\n      parent.createAndAddNewEditor(event, false, {\n        highlightId: this._freeHighlightId,\n        highlightOutlines: this._freeHighlight.getOutlines(),\n        clipPathId: this._freeHighlightClipId,\n        methodOfCreation: \"main_toolbar\"\n      });\n    } else {\n      parent.drawLayer.remove(this._freeHighlightId);\n    }\n    this._freeHighlightId = -1;\n    this._freeHighlight = null;\n    this._freeHighlightClipId = \"\";\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof HighlightAnnotationElement) {\n      const {\n        data: {\n          quadPoints,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        opacity,\n        quadPoints,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    } else if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          borderStyle: {\n            rawWidth: thickness\n          },\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        thickness,\n        inkLists,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const {\n      color,\n      quadPoints,\n      inkLists,\n      opacity\n    } = data;\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.color = Util.makeHexColor(...color);\n    editor.#opacity = opacity || 1;\n    if (inkLists) {\n      editor.#thickness = data.thickness;\n    }\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [pageX, pageY] = editor.pageTranslation;\n    if (quadPoints) {\n      const boxes = editor.#boxes = [];\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        boxes.push({\n          x: (quadPoints[i] - pageX) / pageWidth,\n          y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n          width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n          height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n        });\n      }\n      editor.#createOutlines();\n      editor.#addToDrawLayer();\n      editor.rotate(editor.rotation);\n    } else if (inkLists) {\n      editor.#isFreeHighlight = true;\n      const points = inkLists[0];\n      const point = {\n        x: points[0] - pageX,\n        y: pageHeight - (points[1] - pageY)\n      };\n      const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n      for (let i = 0, ii = points.length; i < ii; i += 2) {\n        point.x = points[i] - pageX;\n        point.y = pageHeight - (points[i + 1] - pageY);\n        outliner.add(point);\n      }\n      const {\n        id,\n        clipPathId\n      } = parent.drawLayer.draw({\n        bbox: [0, 0, 1, 1],\n        root: {\n          viewBox: \"0 0 1 1\",\n          fill: editor.color,\n          \"fill-opacity\": editor._defaultOpacity\n        },\n        rootClass: {\n          highlight: true,\n          free: true\n        },\n        path: {\n          d: outliner.toSVGPath()\n        }\n      }, true, true);\n      editor.#createFreeOutlines({\n        highlightOutlines: outliner.getOutlines(),\n        highlightId: id,\n        clipPathId\n      });\n      editor.#addToDrawLayer();\n    }\n    return editor;\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty() || isForCopying) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.color);\n    const serialized = {\n      annotationType: AnnotationEditorType.HIGHLIGHT,\n      color,\n      opacity: this.#opacity,\n      thickness: this.#thickness,\n      quadPoints: this.#serializeBoxes(),\n      outlines: this.#serializeOutlines(rect),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.#getRotation(),\n      structTreeParentId: this._structTreeParentId\n    };\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      color\n    } = this._initialData;\n    return serialized.color.some((c, i) => c !== color[i]);\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\nclass DrawingOptions {\n  #svgProperties = Object.create(null);\n  updateProperty(name, value) {\n    this[name] = value;\n    this.updateSVGProperty(name, value);\n  }\n  updateProperties(properties) {\n    if (!properties) {\n      return;\n    }\n    for (const [name, value] of Object.entries(properties)) {\n      if (!name.startsWith(\"_\")) {\n        this.updateProperty(name, value);\n      }\n    }\n  }\n  updateSVGProperty(name, value) {\n    this.#svgProperties[name] = value;\n  }\n  toSVGProperties() {\n    const root = this.#svgProperties;\n    this.#svgProperties = Object.create(null);\n    return {\n      root\n    };\n  }\n  reset() {\n    this.#svgProperties = Object.create(null);\n  }\n  updateAll(options = this) {\n    this.updateProperties(options);\n  }\n  clone() {\n    unreachable(\"Not implemented\");\n  }\n}\nclass DrawingEditor extends AnnotationEditor {\n  #drawOutlines = null;\n  #mustBeCommitted;\n  _drawId = null;\n  static _currentDrawId = -1;\n  static _currentParent = null;\n  static #currentDraw = null;\n  static #currentDrawingAC = null;\n  static #currentDrawingOptions = null;\n  static #currentPointerId = NaN;\n  static #currentPointerType = null;\n  static #currentPointerIds = null;\n  static #currentMoveTimestamp = NaN;\n  static _INNER_MARGIN = 3;\n  constructor(params) {\n    super(params);\n    this.#mustBeCommitted = params.mustBeCommitted || false;\n    this._addOutlines(params);\n  }\n  _addOutlines(params) {\n    if (params.drawOutlines) {\n      this.#createDrawOutlines(params);\n      this.#addToDrawLayer();\n    }\n  }\n  #createDrawOutlines({\n    drawOutlines,\n    drawId,\n    drawingOptions\n  }) {\n    this.#drawOutlines = drawOutlines;\n    this._drawingOptions ||= drawingOptions;\n    if (drawId >= 0) {\n      this._drawId = drawId;\n      this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n    } else {\n      this._drawId = this.#createDrawing(drawOutlines, this.parent);\n    }\n    this.#updateBbox(drawOutlines.box);\n  }\n  #createDrawing(drawOutlines, parent) {\n    const {\n      id\n    } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n    return id;\n  }\n  static _mergeSVGProperties(p1, p2) {\n    const p1Keys = new Set(Object.keys(p1));\n    for (const [key, value] of Object.entries(p2)) {\n      if (p1Keys.has(key)) {\n        Object.assign(p1[key], value);\n      } else {\n        p1[key] = value;\n      }\n    }\n    return p1;\n  }\n  static getDefaultDrawingOptions(_options) {\n    unreachable(\"Not implemented\");\n  }\n  static get typesMap() {\n    unreachable(\"Not implemented\");\n  }\n  static get isDrawer() {\n    return true;\n  }\n  static get supportMultipleDrawings() {\n    return false;\n  }\n  static updateDefaultParams(type, value) {\n    const propertyName = this.typesMap.get(type);\n    if (propertyName) {\n      this._defaultDrawingOptions.updateProperty(propertyName, value);\n    }\n    if (this._currentParent) {\n      DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n      this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n    }\n  }\n  updateParams(type, value) {\n    const propertyName = this.constructor.typesMap.get(type);\n    if (propertyName) {\n      this._updateProperty(type, propertyName, value);\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    const properties = [];\n    const options = this._defaultDrawingOptions;\n    for (const [type, name] of this.typesMap) {\n      properties.push([type, options[name]]);\n    }\n    return properties;\n  }\n  get propertiesToUpdate() {\n    const properties = [];\n    const {\n      _drawingOptions\n    } = this;\n    for (const [type, name] of this.constructor.typesMap) {\n      properties.push([type, _drawingOptions[name]]);\n    }\n    return properties;\n  }\n  _updateProperty(type, name, value) {\n    const options = this._drawingOptions;\n    const savedValue = options[name];\n    const setter = val => {\n      options.updateProperty(name, val);\n      const bbox = this.#drawOutlines.updateProperty(name, val);\n      if (bbox) {\n        this.#updateBbox(bbox);\n      }\n      this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n    };\n    this.addCommands({\n      cmd: setter.bind(this, value),\n      undo: setter.bind(this, savedValue),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  _onResizing() {\n    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n      bbox: this.#rotateBox()\n    }));\n  }\n  _onResized() {\n    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n      bbox: this.#rotateBox()\n    }));\n  }\n  _onTranslating(_x, _y) {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      bbox: this.#rotateBox()\n    });\n  }\n  _onTranslated() {\n    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n      bbox: this.#rotateBox()\n    }));\n  }\n  _onStartDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: true\n      }\n    });\n  }\n  _onStopDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: false\n      }\n    });\n  }\n  commit() {\n    super.commit();\n    this.disableEditMode();\n    this.disableEditing();\n  }\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n  getBaseTranslation() {\n    return [0, 0];\n  }\n  get isResizable() {\n    return true;\n  }\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    this._isDraggable = true;\n    if (this.#mustBeCommitted) {\n      this.#mustBeCommitted = false;\n      this.commit();\n      this.parent.setSelected(this);\n      if (focus && this.isOnScreen) {\n        this.div.focus();\n      }\n    }\n  }\n  remove() {\n    this.#cleanDrawLayer();\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    this.#addToDrawLayer();\n    this.#updateBbox(this.#drawOutlines.box);\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this._uiManager.removeShouldRescale(this);\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this._uiManager.addShouldRescale(this);\n      this.#addToDrawLayer(parent);\n      mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    if (mustBeSelected) {\n      this.select();\n    }\n  }\n  #cleanDrawLayer() {\n    if (this._drawId === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this._drawId);\n    this._drawId = null;\n    this._drawingOptions.reset();\n  }\n  #addToDrawLayer(parent = this.parent) {\n    if (this._drawId !== null && this.parent === parent) {\n      return;\n    }\n    if (this._drawId !== null) {\n      this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n      return;\n    }\n    this._drawingOptions.updateAll();\n    this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n  }\n  #convertToParentSpace([x, y, width, height]) {\n    const {\n      parentDimensions: [pW, pH],\n      rotation\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n  #convertToDrawSpace() {\n    const {\n      x,\n      y,\n      width,\n      height,\n      parentDimensions: [pW, pH],\n      rotation\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n  #updateBbox(bbox) {\n    [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n    if (this.div) {\n      this.fixAndSetPosition();\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\n    }\n    this._onResized();\n  }\n  #rotateBox() {\n    const {\n      x,\n      y,\n      width,\n      height,\n      rotation,\n      parentRotation,\n      parentDimensions: [pW, pH]\n    } = this;\n    switch ((rotation * 4 + parentRotation) / 90) {\n      case 1:\n        return [1 - y - height, x, height, width];\n      case 2:\n        return [1 - x - width, 1 - y - height, width, height];\n      case 3:\n        return [y, 1 - x - width, height, width];\n      case 4:\n        return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n      case 5:\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 6:\n        return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n      case 7:\n        return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n      case 8:\n        return [x - width, y - height, width, height];\n      case 9:\n        return [1 - y, x - width, height, width];\n      case 10:\n        return [1 - x, 1 - y, width, height];\n      case 11:\n        return [y - height, 1 - x, height, width];\n      case 12:\n        return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n      case 13:\n        return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n      case 14:\n        return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n      case 15:\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n  rotate() {\n    if (!this.parent) {\n      return;\n    }\n    this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n      bbox: this.#rotateBox()\n    }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n  }\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n  }\n  static onScaleChangingWhenDrawing() {}\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this._isCopy) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    const div = super.render();\n    div.classList.add(\"draw\");\n    const drawDiv = document.createElement(\"div\");\n    div.append(drawDiv);\n    drawDiv.setAttribute(\"aria-hidden\", \"true\");\n    drawDiv.className = \"internal\";\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n    this._uiManager.addShouldRescale(this);\n    this.disableEditing();\n    if (this._isCopy) {\n      this._moveAfterPaste(baseX, baseY);\n    }\n    return div;\n  }\n  static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n    unreachable(\"Not implemented\");\n  }\n  static startDrawing(parent, uiManager, _isLTR, event) {\n    const {\n      target,\n      offsetX: x,\n      offsetY: y,\n      pointerId,\n      pointerType\n    } = event;\n    if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n      return;\n    }\n    const {\n      viewport: {\n        rotation\n      }\n    } = parent;\n    const {\n      width: parentWidth,\n      height: parentHeight\n    } = target.getBoundingClientRect();\n    const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n    const signal = parent.combinedSignal(ac);\n    DrawingEditor.#currentPointerId ||= pointerId;\n    DrawingEditor.#currentPointerType ??= pointerType;\n    window.addEventListener(\"pointerup\", e => {\n      if (DrawingEditor.#currentPointerId === e.pointerId) {\n        this._endDraw(e);\n      } else {\n        DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n      }\n    }, {\n      signal\n    });\n    window.addEventListener(\"pointercancel\", e => {\n      if (DrawingEditor.#currentPointerId === e.pointerId) {\n        this._currentParent.endDrawingSession();\n      } else {\n        DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n      }\n    }, {\n      signal\n    });\n    window.addEventListener(\"pointerdown\", e => {\n      if (DrawingEditor.#currentPointerType !== e.pointerType) {\n        return;\n      }\n      (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n      if (DrawingEditor.#currentDraw.isCancellable()) {\n        DrawingEditor.#currentDraw.removeLastElement();\n        if (DrawingEditor.#currentDraw.isEmpty()) {\n          this._currentParent.endDrawingSession(true);\n        } else {\n          this._endDraw(null);\n        }\n      }\n    }, {\n      capture: true,\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n      signal\n    });\n    target.addEventListener(\"touchmove\", e => {\n      if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n        stopEvent(e);\n      }\n    }, {\n      signal\n    });\n    parent.toggleDrawing();\n    uiManager._editorUndoBar?.hide();\n    if (DrawingEditor.#currentDraw) {\n      parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n      return;\n    }\n    uiManager.updateUIForDefaultProperties(this);\n    DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n    DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n    this._currentParent = parent;\n    ({\n      id: this._currentDrawId\n    } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n  }\n  static _drawMove(event) {\n    DrawingEditor.#currentMoveTimestamp = -1;\n    if (!DrawingEditor.#currentDraw) {\n      return;\n    }\n    const {\n      offsetX,\n      offsetY,\n      pointerId\n    } = event;\n    if (DrawingEditor.#currentPointerId !== pointerId) {\n      return;\n    }\n    if (DrawingEditor.#currentPointerIds?.size >= 1) {\n      this._endDraw(event);\n      return;\n    }\n    this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n    DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n    stopEvent(event);\n  }\n  static _cleanup(all) {\n    if (all) {\n      this._currentDrawId = -1;\n      this._currentParent = null;\n      DrawingEditor.#currentDraw = null;\n      DrawingEditor.#currentDrawingOptions = null;\n      DrawingEditor.#currentPointerType = null;\n      DrawingEditor.#currentMoveTimestamp = NaN;\n    }\n    if (DrawingEditor.#currentDrawingAC) {\n      DrawingEditor.#currentDrawingAC.abort();\n      DrawingEditor.#currentDrawingAC = null;\n      DrawingEditor.#currentPointerId = NaN;\n      DrawingEditor.#currentPointerIds = null;\n    }\n  }\n  static _endDraw(event) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n    parent.toggleDrawing(true);\n    this._cleanup(false);\n    if (event?.target === parent.div) {\n      parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n    }\n    if (this.supportMultipleDrawings) {\n      const draw = DrawingEditor.#currentDraw;\n      const drawId = this._currentDrawId;\n      const lastElement = draw.getLastElement();\n      parent.addCommands({\n        cmd: () => {\n          parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n        },\n        undo: () => {\n          parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n        },\n        mustExec: false,\n        type: AnnotationEditorParamsType.DRAW_STEP\n      });\n      return;\n    }\n    this.endDrawing(false);\n  }\n  static endDrawing(isAborted) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return null;\n    }\n    parent.toggleDrawing(true);\n    parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n    if (!DrawingEditor.#currentDraw.isEmpty()) {\n      const {\n        pageDimensions: [pageWidth, pageHeight],\n        scale\n      } = parent;\n      const editor = parent.createAndAddNewEditor({\n        offsetX: 0,\n        offsetY: 0\n      }, false, {\n        drawId: this._currentDrawId,\n        drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n        drawingOptions: DrawingEditor.#currentDrawingOptions,\n        mustBeCommitted: !isAborted\n      });\n      this._cleanup(true);\n      return editor;\n    }\n    parent.drawLayer.remove(this._currentDrawId);\n    this._cleanup(true);\n    return null;\n  }\n  createDrawingOptions(_data) {}\n  static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n    unreachable(\"Not implemented\");\n  }\n  static async deserialize(data, parent, uiManager) {\n    const {\n      rawDims: {\n        pageWidth,\n        pageHeight,\n        pageX,\n        pageY\n      }\n    } = parent.viewport;\n    const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.createDrawingOptions(data);\n    editor.#createDrawOutlines({\n      drawOutlines\n    });\n    editor.#addToDrawLayer();\n    editor.onScaleChanging();\n    editor.rotate();\n    return editor;\n  }\n  serializeDraw(isForCopying) {\n    const [pageX, pageY] = this.pageTranslation;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n  #last = new Float64Array(6);\n  #line;\n  #lines;\n  #rotation;\n  #thickness;\n  #points;\n  #lastSVGPath = \"\";\n  #lastIndex = 0;\n  #outlines = new InkDrawOutline();\n  #parentWidth;\n  #parentHeight;\n  constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n    [x, y] = this.#normalizePoint(x, y);\n    const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n    this.#points = [x, y];\n    this.#lines = [{\n      line,\n      points: this.#points\n    }];\n    this.#last.set(line, 0);\n  }\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      this.#thickness = value;\n    }\n  }\n  #normalizePoint(x, y) {\n    return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n  }\n  isEmpty() {\n    return !this.#lines || this.#lines.length === 0;\n  }\n  isCancellable() {\n    return this.#points.length <= 10;\n  }\n  add(x, y) {\n    [x, y] = this.#normalizePoint(x, y);\n    const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n    if (d <= 2) {\n      return null;\n    }\n    this.#points.push(x, y);\n    if (isNaN(x1)) {\n      this.#last.set([x2, y2, x, y], 2);\n      this.#line.push(NaN, NaN, NaN, NaN, x, y);\n      return {\n        path: {\n          d: this.toSVGPath()\n        }\n      };\n    }\n    if (isNaN(this.#last[0])) {\n      this.#line.splice(6, 6);\n    }\n    this.#last.set([x1, y1, x2, y2, x, y], 0);\n    this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  end(x, y) {\n    const change = this.add(x, y);\n    if (change) {\n      return change;\n    }\n    if (this.#points.length === 2) {\n      return {\n        path: {\n          d: this.toSVGPath()\n        }\n      };\n    }\n    return null;\n  }\n  startNew(x, y, parentWidth, parentHeight, rotation) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n    [x, y] = this.#normalizePoint(x, y);\n    const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n    this.#points = [x, y];\n    const last = this.#lines.at(-1);\n    if (last) {\n      last.line = new Float32Array(last.line);\n      last.points = new Float32Array(last.points);\n    }\n    this.#lines.push({\n      line,\n      points: this.#points\n    });\n    this.#last.set(line, 0);\n    this.#lastIndex = 0;\n    this.toSVGPath();\n    return null;\n  }\n  getLastElement() {\n    return this.#lines.at(-1);\n  }\n  setLastElement(element) {\n    if (!this.#lines) {\n      return this.#outlines.setLastElement(element);\n    }\n    this.#lines.push(element);\n    this.#line = element.line;\n    this.#points = element.points;\n    this.#lastIndex = 0;\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  removeLastElement() {\n    if (!this.#lines) {\n      return this.#outlines.removeLastElement();\n    }\n    this.#lines.pop();\n    this.#lastSVGPath = \"\";\n    for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n      const {\n        line,\n        points\n      } = this.#lines[i];\n      this.#line = line;\n      this.#points = points;\n      this.#lastIndex = 0;\n      this.toSVGPath();\n    }\n    return {\n      path: {\n        d: this.#lastSVGPath\n      }\n    };\n  }\n  toSVGPath() {\n    const firstX = Outline.svgRound(this.#line[4]);\n    const firstY = Outline.svgRound(this.#line[5]);\n    if (this.#points.length === 2) {\n      this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n      return this.#lastSVGPath;\n    }\n    if (this.#points.length <= 6) {\n      const i = this.#lastSVGPath.lastIndexOf(\"M\");\n      this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n      this.#lastIndex = 6;\n    }\n    if (this.#points.length === 4) {\n      const secondX = Outline.svgRound(this.#line[10]);\n      const secondY = Outline.svgRound(this.#line[11]);\n      this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n      this.#lastIndex = 12;\n      return this.#lastSVGPath;\n    }\n    const buffer = [];\n    if (this.#lastIndex === 0) {\n      buffer.push(`M ${firstX} ${firstY}`);\n      this.#lastIndex = 6;\n    }\n    for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n      const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n      buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n    }\n    this.#lastSVGPath += buffer.join(\" \");\n    this.#lastIndex = this.#line.length;\n    return this.#lastSVGPath;\n  }\n  getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n    const last = this.#lines.at(-1);\n    last.line = new Float32Array(last.line);\n    last.points = new Float32Array(last.points);\n    this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n    this.#last = null;\n    this.#line = null;\n    this.#lines = null;\n    this.#lastSVGPath = null;\n    return this.#outlines;\n  }\n  get defaultSVGProperties() {\n    return {\n      root: {\n        viewBox: \"0 0 10000 10000\"\n      },\n      rootClass: {\n        draw: true\n      },\n      bbox: [0, 0, 1, 1]\n    };\n  }\n}\nclass InkDrawOutline extends Outline {\n  #bbox;\n  #currentRotation = 0;\n  #innerMargin;\n  #lines;\n  #parentWidth;\n  #parentHeight;\n  #parentScale;\n  #rotation;\n  #thickness;\n  build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#parentScale = parentScale;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n    this.#innerMargin = innerMargin ?? 0;\n    this.#lines = lines;\n    this.#computeBbox();\n  }\n  get thickness() {\n    return this.#thickness;\n  }\n  setLastElement(element) {\n    this.#lines.push(element);\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  removeLastElement() {\n    this.#lines.pop();\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  toSVGPath() {\n    const buffer = [];\n    for (const {\n      line\n    } of this.#lines) {\n      buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n      if (line.length === 6) {\n        buffer.push(\"Z\");\n        continue;\n      }\n      if (line.length === 12 && isNaN(line[6])) {\n        buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n        continue;\n      }\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n        buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n      }\n    }\n    return buffer.join(\"\");\n  }\n  serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n    const serializedLines = [];\n    const serializedPoints = [];\n    const [x, y, width, height] = this.#getBBoxWithNoMargin();\n    let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n    switch (this.#rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = pageX;\n        ty = pageY + pageHeight;\n        sx = pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + x * pageWidth;\n        y1 = pageY + (1 - y - height) * pageHeight;\n        x2 = pageX + (x + width) * pageWidth;\n        y2 = pageY + (1 - y) * pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX;\n        ty = pageY;\n        sx = pageWidth;\n        sy = pageHeight;\n        x1 = pageX + y * pageWidth;\n        y1 = pageY + x * pageHeight;\n        x2 = pageX + (y + height) * pageWidth;\n        y2 = pageY + (x + width) * pageHeight;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX + pageWidth;\n        ty = pageY;\n        sx = -pageWidth;\n        sy = pageHeight;\n        x1 = pageX + (1 - x - width) * pageWidth;\n        y1 = pageY + y * pageHeight;\n        x2 = pageX + (1 - x) * pageWidth;\n        y2 = pageY + (y + height) * pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX + pageWidth;\n        ty = pageY + pageHeight;\n        sx = -pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + (1 - y - height) * pageWidth;\n        y1 = pageY + (1 - x - width) * pageHeight;\n        x2 = pageX + (1 - y) * pageWidth;\n        y2 = pageY + (1 - x) * pageHeight;\n        break;\n    }\n    for (const {\n      line,\n      points\n    } of this.#lines) {\n      serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n      serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n    }\n    return {\n      lines: serializedLines,\n      points: serializedPoints,\n      rect: [x1, y1, x2, y2]\n    };\n  }\n  static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n    paths: {\n      lines,\n      points\n    },\n    rotation,\n    thickness\n  }) {\n    const newLines = [];\n    let tx, ty, sx, sy, rescaleFn;\n    switch (rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = -pageX / pageWidth;\n        ty = pageY / pageHeight + 1;\n        sx = 1 / pageWidth;\n        sy = -1 / pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = -pageY / pageHeight;\n        ty = -pageX / pageWidth;\n        sx = 1 / pageHeight;\n        sy = 1 / pageWidth;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX / pageWidth + 1;\n        ty = -pageY / pageHeight;\n        sx = -1 / pageWidth;\n        sy = 1 / pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageY / pageHeight + 1;\n        ty = pageX / pageWidth + 1;\n        sx = -1 / pageHeight;\n        sy = -1 / pageWidth;\n        break;\n    }\n    if (!lines) {\n      lines = [];\n      for (const point of points) {\n        const len = point.length;\n        if (len === 2) {\n          lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n          continue;\n        }\n        if (len === 4) {\n          lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n          continue;\n        }\n        const line = new Float32Array(3 * (len - 2));\n        lines.push(line);\n        let [x1, y1, x2, y2] = point.subarray(0, 4);\n        line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n        for (let i = 4; i < len; i += 2) {\n          const x = point[i];\n          const y = point[i + 1];\n          line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n          [x1, y1, x2, y2] = [x2, y2, x, y];\n        }\n      }\n    }\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      newLines.push({\n        line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n        points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n      });\n    }\n    const outlines = new this.prototype.constructor();\n    outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n    return outlines;\n  }\n  #getMarginComponents(thickness = this.#thickness) {\n    const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n    return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n  }\n  #getBBoxWithNoMargin() {\n    const [x, y, width, height] = this.#bbox;\n    const [marginX, marginY] = this.#getMarginComponents(0);\n    return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n  }\n  #computeBbox() {\n    const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n    for (const {\n      line\n    } of this.#lines) {\n      if (line.length <= 12) {\n        for (let i = 4, ii = line.length; i < ii; i += 6) {\n          const [x, y] = line.subarray(i, i + 2);\n          bbox[0] = Math.min(bbox[0], x);\n          bbox[1] = Math.min(bbox[1], y);\n          bbox[2] = Math.max(bbox[2], x);\n          bbox[3] = Math.max(bbox[3], y);\n        }\n        continue;\n      }\n      let lastX = line[4],\n        lastY = line[5];\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n        Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n        lastX = x;\n        lastY = y;\n      }\n    }\n    const [marginX, marginY] = this.#getMarginComponents();\n    bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n    bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n    bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n    bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n    bbox[2] -= bbox[0];\n    bbox[3] -= bbox[1];\n  }\n  get box() {\n    return this.#bbox;\n  }\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      return this.#updateThickness(value);\n    }\n    return null;\n  }\n  #updateThickness(thickness) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#thickness = thickness;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n    return bbox;\n  }\n  updateParentDimensions([width, height], scale) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#parentWidth = width;\n    this.#parentHeight = height;\n    this.#parentScale = scale;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const diffMarginX = newMarginX - oldMarginX;\n    const diffMarginY = newMarginY - oldMarginY;\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n    return bbox;\n  }\n  updateRotation(rotation) {\n    this.#currentRotation = rotation;\n    return {\n      path: {\n        transform: this.rotationTransform\n      }\n    };\n  }\n  get viewBox() {\n    return this.#bbox.map(Outline.svgRound).join(\" \");\n  }\n  get defaultProperties() {\n    const [x, y] = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n      }\n    };\n  }\n  get rotationTransform() {\n    const [,, width, height] = this.#bbox;\n    let a = 0,\n      b = 0,\n      c = 0,\n      d = 0,\n      e = 0,\n      f = 0;\n    switch (this.#currentRotation) {\n      case 90:\n        b = height / width;\n        c = -width / height;\n        e = width;\n        break;\n      case 180:\n        a = -1;\n        d = -1;\n        e = width;\n        f = height;\n        break;\n      case 270:\n        b = -height / width;\n        c = width / height;\n        f = height;\n        break;\n      default:\n        return \"\";\n    }\n    return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n  }\n  getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const [x, y, width, height] = this.#bbox;\n    if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      return {\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: `${this.rotationTransform} translate(${tx} ${ty})`\n        }\n      };\n    }\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const s2x = width / newWidth;\n    const s2y = height / newHeight;\n    return {\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n        transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n      }\n    };\n  }\n  getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const bbox = this.#bbox;\n    const [x, y, width, height] = bbox;\n    bbox[0] = newX;\n    bbox[1] = newY;\n    bbox[2] = newWidth;\n    bbox[3] = newHeight;\n    if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n      return {\n        root: {\n          viewBox: this.viewBox\n        },\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: this.rotationTransform || null,\n          d: this.toSVGPath()\n        }\n      };\n    }\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const tx = -s1x * (x + marginX) + newX + marginX;\n    const ty = -s1y * (y + marginY) + newY + marginY;\n    if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._rescale(line, tx, ty, s1x, s1y, line);\n        Outline._rescale(points, tx, ty, s1x, s1y, points);\n      }\n    }\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n        transform: this.rotationTransform || null,\n        d: this.toSVGPath()\n      }\n    };\n  }\n  getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n    const [newParentWidth, newParentHeight] = parentDimensions;\n    const bbox = this.#bbox;\n    const tx = newX - bbox[0];\n    const ty = newY - bbox[1];\n    if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n    } else {\n      const sx = this.#parentWidth / newParentWidth;\n      const sy = this.#parentHeight / newParentHeight;\n      this.#parentWidth = newParentWidth;\n      this.#parentHeight = newParentHeight;\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._rescale(line, tx, ty, sx, sy, line);\n        Outline._rescale(points, tx, ty, sx, sy, points);\n      }\n      bbox[2] *= sx;\n      bbox[3] *= sy;\n    }\n    bbox[0] = newX;\n    bbox[1] = newY;\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n      }\n    };\n  }\n  get defaultSVGProperties() {\n    const bbox = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      rootClass: {\n        draw: true\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n        transform: this.rotationTransform || null\n      },\n      bbox\n    };\n  }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n  constructor(viewerParameters) {\n    super();\n    this._viewParameters = viewerParameters;\n    super.updateProperties({\n      fill: \"none\",\n      stroke: AnnotationEditor._defaultLineColor,\n      \"stroke-opacity\": 1,\n      \"stroke-width\": 1,\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"stroke-miterlimit\": 10\n    });\n  }\n  updateSVGProperty(name, value) {\n    if (name === \"stroke-width\") {\n      value ??= this[\"stroke-width\"];\n      value *= this._viewParameters.realScale;\n    }\n    super.updateSVGProperty(name, value);\n  }\n  clone() {\n    const clone = new InkDrawingOptions(this._viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\nclass InkEditor extends DrawingEditor {\n  static _type = \"ink\";\n  static _editorType = AnnotationEditorType.INK;\n  static _defaultDrawingOptions = null;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"inkEditor\"\n    });\n    this._willKeepAspectRatio = true;\n    this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n  }\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n  static get supportMultipleDrawings() {\n    return true;\n  }\n  static get typesMap() {\n    return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n  }\n  static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n    return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n  }\n  static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n    return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          borderStyle: {\n            rawWidth: thickness\n          },\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.INK,\n        color: Array.from(color),\n        thickness,\n        opacity,\n        paths: {\n          points: inkLists\n        },\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    return editor;\n  }\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    super.onScaleChanging();\n    const {\n      _drawId,\n      _drawingOptions,\n      parent\n    } = this;\n    _drawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n  }\n  static onScaleChangingWhenDrawing() {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n    super.onScaleChangingWhenDrawing();\n    this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n  }\n  createDrawingOptions({\n    color,\n    thickness,\n    opacity\n  }) {\n    this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n      stroke: Util.makeHexColor(...color),\n      \"stroke-width\": thickness,\n      \"stroke-opacity\": opacity\n    });\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const {\n      lines,\n      points,\n      rect\n    } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: {\n        stroke,\n        \"stroke-opacity\": opacity,\n        \"stroke-width\": thickness\n      }\n    } = this;\n    const serialized = {\n      annotationType: AnnotationEditorType.INK,\n      color: AnnotationEditor._colorManager.convert(stroke),\n      opacity,\n      thickness,\n      paths: {\n        lines,\n        points\n      },\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      serialized.isCopy = true;\n      return serialized;\n    }\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      color,\n      thickness,\n      opacity,\n      pageIndex\n    } = this._initialData;\n    return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n  }\n  renderAnnotationElement(annotation) {\n    const {\n      points,\n      rect\n    } = this.serializeDraw(false);\n    annotation.updateEdited({\n      rect,\n      thickness: this._drawingOptions[\"stroke-width\"],\n      points\n    });\n    return null;\n  }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n  toSVGPath() {\n    let path = super.toSVGPath();\n    if (!path.endsWith(\"Z\")) {\n      path += \"Z\";\n    }\n    return path;\n  }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n  static #PARAMETERS = {\n    maxDim: 512,\n    sigmaSFactor: 0.02,\n    sigmaR: 25,\n    kernelSize: 16\n  };\n  static #neighborIndexToId(i0, j0, i, j) {\n    i -= i0;\n    j -= j0;\n    if (i === 0) {\n      return j > 0 ? 0 : 4;\n    }\n    if (i === 1) {\n      return j + 6;\n    }\n    return 2 - j;\n  }\n  static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n  static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n    const id = this.#neighborIndexToId(i0, j0, i, j);\n    for (let k = 0; k < 8; k++) {\n      const kk = (-k + id - offset + 16) % 8;\n      const shiftI = this.#neighborIdToIndex[2 * kk];\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n        return kk;\n      }\n    }\n    return -1;\n  }\n  static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n    const id = this.#neighborIndexToId(i0, j0, i, j);\n    for (let k = 0; k < 8; k++) {\n      const kk = (k + id + offset + 16) % 8;\n      const shiftI = this.#neighborIdToIndex[2 * kk];\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n        return kk;\n      }\n    }\n    return -1;\n  }\n  static #findContours(buf, width, height, threshold) {\n    const N = buf.length;\n    const types = new Int32Array(N);\n    for (let i = 0; i < N; i++) {\n      types[i] = buf[i] <= threshold ? 1 : 0;\n    }\n    for (let i = 1; i < height - 1; i++) {\n      types[i * width] = types[i * width + width - 1] = 0;\n    }\n    for (let i = 0; i < width; i++) {\n      types[i] = types[width * height - 1 - i] = 0;\n    }\n    let nbd = 1;\n    let lnbd;\n    const contours = [];\n    for (let i = 1; i < height - 1; i++) {\n      lnbd = 1;\n      for (let j = 1; j < width - 1; j++) {\n        const ij = i * width + j;\n        const pix = types[ij];\n        if (pix === 0) {\n          continue;\n        }\n        let i2 = i;\n        let j2 = j;\n        if (pix === 1 && types[ij - 1] === 0) {\n          nbd += 1;\n          j2 -= 1;\n        } else if (pix >= 1 && types[ij + 1] === 0) {\n          nbd += 1;\n          j2 += 1;\n          if (pix > 1) {\n            lnbd = pix;\n          }\n        } else {\n          if (pix !== 1) {\n            lnbd = Math.abs(pix);\n          }\n          continue;\n        }\n        const points = [j, i];\n        const isHole = j2 === j + 1;\n        const contour = {\n          isHole,\n          points,\n          id: nbd,\n          parent: 0\n        };\n        contours.push(contour);\n        let contour0;\n        for (const c of contours) {\n          if (c.id === lnbd) {\n            contour0 = c;\n            break;\n          }\n        }\n        if (!contour0) {\n          contour.parent = isHole ? lnbd : 0;\n        } else if (contour0.isHole) {\n          contour.parent = isHole ? contour0.parent : lnbd;\n        } else {\n          contour.parent = isHole ? lnbd : contour0.parent;\n        }\n        const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n        if (k === -1) {\n          types[ij] = -nbd;\n          if (types[ij] !== 1) {\n            lnbd = Math.abs(types[ij]);\n          }\n          continue;\n        }\n        let shiftI = this.#neighborIdToIndex[2 * k];\n        let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n        const i1 = i + shiftI;\n        const j1 = j + shiftJ;\n        i2 = i1;\n        j2 = j1;\n        let i3 = i;\n        let j3 = j;\n        while (true) {\n          const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n          shiftI = this.#neighborIdToIndex[2 * kk];\n          shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n          const i4 = i3 + shiftI;\n          const j4 = j3 + shiftJ;\n          points.push(j4, i4);\n          const ij3 = i3 * width + j3;\n          if (types[ij3 + 1] === 0) {\n            types[ij3] = -nbd;\n          } else if (types[ij3] === 1) {\n            types[ij3] = nbd;\n          }\n          if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n            if (types[ij] !== 1) {\n              lnbd = Math.abs(types[ij]);\n            }\n            break;\n          } else {\n            i2 = i3;\n            j2 = j3;\n            i3 = i4;\n            j3 = j4;\n          }\n        }\n      }\n    }\n    return contours;\n  }\n  static #douglasPeuckerHelper(points, start, end, output) {\n    if (end - start <= 4) {\n      for (let i = start; i < end - 2; i += 2) {\n        output.push(points[i], points[i + 1]);\n      }\n      return;\n    }\n    const ax = points[start];\n    const ay = points[start + 1];\n    const abx = points[end - 4] - ax;\n    const aby = points[end - 3] - ay;\n    const dist = Math.hypot(abx, aby);\n    const nabx = abx / dist;\n    const naby = aby / dist;\n    const aa = nabx * ay - naby * ax;\n    const m = aby / abx;\n    const invS = 1 / dist;\n    const phi = Math.atan(m);\n    const cosPhi = Math.cos(phi);\n    const sinPhi = Math.sin(phi);\n    const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n    const poly = invS * (1 - tmax + tmax ** 2);\n    const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n    let dmax = 0;\n    let index = start;\n    for (let i = start + 2; i < end - 2; i += 2) {\n      const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n      if (d > dmax) {\n        index = i;\n        dmax = d;\n      }\n    }\n    if (dmax > (dist * partialPhi) ** 2) {\n      this.#douglasPeuckerHelper(points, start, index + 2, output);\n      this.#douglasPeuckerHelper(points, index, end, output);\n    } else {\n      output.push(ax, ay);\n    }\n  }\n  static #douglasPeucker(points) {\n    const output = [];\n    const len = points.length;\n    this.#douglasPeuckerHelper(points, 0, len, output);\n    output.push(points[len - 2], points[len - 1]);\n    return output.length <= 4 ? null : output;\n  }\n  static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n    const kernel = new Float32Array(kernelSize ** 2);\n    const sigmaS2 = -2 * sigmaS ** 2;\n    const halfSize = kernelSize >> 1;\n    for (let i = 0; i < kernelSize; i++) {\n      const x = (i - halfSize) ** 2;\n      for (let j = 0; j < kernelSize; j++) {\n        kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n      }\n    }\n    const rangeValues = new Float32Array(256);\n    const sigmaR2 = -2 * sigmaR ** 2;\n    for (let i = 0; i < 256; i++) {\n      rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n    }\n    const N = buf.length;\n    const out = new Uint8Array(N);\n    const histogram = new Uint32Array(256);\n    for (let i = 0; i < height; i++) {\n      for (let j = 0; j < width; j++) {\n        const ij = i * width + j;\n        const center = buf[ij];\n        let sum = 0;\n        let norm = 0;\n        for (let k = 0; k < kernelSize; k++) {\n          const y = i + k - halfSize;\n          if (y < 0 || y >= height) {\n            continue;\n          }\n          for (let l = 0; l < kernelSize; l++) {\n            const x = j + l - halfSize;\n            if (x < 0 || x >= width) {\n              continue;\n            }\n            const neighbour = buf[y * width + x];\n            const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n            sum += neighbour * w;\n            norm += w;\n          }\n        }\n        const pix = out[ij] = Math.round(sum / norm);\n        histogram[pix]++;\n      }\n    }\n    return [out, histogram];\n  }\n  static #getHistogram(buf) {\n    const histogram = new Uint32Array(256);\n    for (const g of buf) {\n      histogram[g]++;\n    }\n    return histogram;\n  }\n  static #toUint8(buf) {\n    const N = buf.length;\n    const out = new Uint8ClampedArray(N >> 2);\n    let max = -Infinity;\n    let min = Infinity;\n    for (let i = 0, ii = out.length; i < ii; i++) {\n      const A = buf[(i << 2) + 3];\n      if (A === 0) {\n        max = out[i] = 0xff;\n        continue;\n      }\n      const pix = out[i] = buf[i << 2];\n      if (pix > max) {\n        max = pix;\n      }\n      if (pix < min) {\n        min = pix;\n      }\n    }\n    const ratio = 255 / (max - min);\n    for (let i = 0; i < N; i++) {\n      out[i] = (out[i] - min) * ratio;\n    }\n    return out;\n  }\n  static #guessThreshold(histogram) {\n    let i;\n    let M = -Infinity;\n    let L = -Infinity;\n    const min = histogram.findIndex(v => v !== 0);\n    let pos = min;\n    let spos = min;\n    for (i = min; i < 256; i++) {\n      const v = histogram[i];\n      if (v > M) {\n        if (i - pos > L) {\n          L = i - pos;\n          spos = i - 1;\n        }\n        M = v;\n        pos = i;\n      }\n    }\n    for (i = spos - 1; i >= 0; i--) {\n      if (histogram[i] > histogram[i + 1]) {\n        break;\n      }\n    }\n    return i;\n  }\n  static #getGrayPixels(bitmap) {\n    const originalBitmap = bitmap;\n    const {\n      width,\n      height\n    } = bitmap;\n    const {\n      maxDim\n    } = this.#PARAMETERS;\n    let newWidth = width;\n    let newHeight = height;\n    if (width > maxDim || height > maxDim) {\n      let prevWidth = width;\n      let prevHeight = height;\n      let steps = Math.log2(Math.max(width, height) / maxDim);\n      const isteps = Math.floor(steps);\n      steps = steps === isteps ? isteps - 1 : isteps;\n      for (let i = 0; i < steps; i++) {\n        newWidth = prevWidth;\n        newHeight = prevHeight;\n        if (newWidth > maxDim) {\n          newWidth = Math.ceil(newWidth / 2);\n        }\n        if (newHeight > maxDim) {\n          newHeight = Math.ceil(newHeight / 2);\n        }\n        const offscreen = new OffscreenCanvas(newWidth, newHeight);\n        const ctx = offscreen.getContext(\"2d\");\n        ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n        prevWidth = newWidth;\n        prevHeight = newHeight;\n        if (bitmap !== originalBitmap) {\n          bitmap.close();\n        }\n        bitmap = offscreen.transferToImageBitmap();\n      }\n      const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n      newWidth = Math.round(newWidth * ratio);\n      newHeight = Math.round(newHeight * ratio);\n    }\n    const offscreen = new OffscreenCanvas(newWidth, newHeight);\n    const ctx = offscreen.getContext(\"2d\", {\n      willReadFrequently: true\n    });\n    ctx.filter = \"grayscale(1)\";\n    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n    const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n    const uint8Buf = this.#toUint8(grayImage);\n    return [uint8Buf, newWidth, newHeight];\n  }\n  static extractContoursFromText(text, {\n    fontFamily,\n    fontStyle,\n    fontWeight\n  }, pageWidth, pageHeight, rotation, innerMargin) {\n    let canvas = new OffscreenCanvas(1, 1);\n    let ctx = canvas.getContext(\"2d\", {\n      alpha: false\n    });\n    const fontSize = 200;\n    const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n    const {\n      actualBoundingBoxLeft,\n      actualBoundingBoxRight,\n      actualBoundingBoxAscent,\n      actualBoundingBoxDescent,\n      fontBoundingBoxAscent,\n      fontBoundingBoxDescent,\n      width\n    } = ctx.measureText(text);\n    const SCALE = 1.5;\n    const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n    const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n    canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n    ctx = canvas.getContext(\"2d\", {\n      alpha: true,\n      willReadFrequently: true\n    });\n    ctx.font = font;\n    ctx.filter = \"grayscale(1)\";\n    ctx.fillStyle = \"white\";\n    ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n    ctx.fillStyle = \"black\";\n    ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n    const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n    const histogram = this.#getHistogram(uint8Buf);\n    const threshold = this.#guessThreshold(histogram);\n    const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n    return this.processDrawnLines({\n      lines: {\n        curves: contourList,\n        width: canvasWidth,\n        height: canvasHeight\n      },\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin,\n      mustSmooth: true,\n      areContours: true\n    });\n  }\n  static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n    const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n    const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n    const threshold = this.#guessThreshold(histogram);\n    const contourList = this.#findContours(buffer, width, height, threshold);\n    return this.processDrawnLines({\n      lines: {\n        curves: contourList,\n        width,\n        height\n      },\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin,\n      mustSmooth: true,\n      areContours: true\n    });\n  }\n  static processDrawnLines({\n    lines,\n    pageWidth,\n    pageHeight,\n    rotation,\n    innerMargin,\n    mustSmooth,\n    areContours\n  }) {\n    if (rotation % 180 !== 0) {\n      [pageWidth, pageHeight] = [pageHeight, pageWidth];\n    }\n    const {\n      curves,\n      width,\n      height\n    } = lines;\n    const thickness = lines.thickness ?? 0;\n    const linesAndPoints = [];\n    const ratio = Math.min(pageWidth / width, pageHeight / height);\n    const xScale = ratio / pageWidth;\n    const yScale = ratio / pageHeight;\n    const newCurves = [];\n    for (const {\n      points\n    } of curves) {\n      const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n      if (!reducedPoints) {\n        continue;\n      }\n      newCurves.push(reducedPoints);\n      const len = reducedPoints.length;\n      const newPoints = new Float32Array(len);\n      const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n      linesAndPoints.push({\n        line,\n        points: newPoints\n      });\n      if (len === 2) {\n        newPoints[0] = reducedPoints[0] * xScale;\n        newPoints[1] = reducedPoints[1] * yScale;\n        line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n        continue;\n      }\n      let [x1, y1, x2, y2] = reducedPoints;\n      x1 *= xScale;\n      y1 *= yScale;\n      x2 *= xScale;\n      y2 *= yScale;\n      newPoints.set([x1, y1, x2, y2], 0);\n      line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n      for (let i = 4; i < len; i += 2) {\n        const x = newPoints[i] = reducedPoints[i] * xScale;\n        const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n        line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n        [x1, y1, x2, y2] = [x2, y2, x, y];\n      }\n    }\n    if (linesAndPoints.length === 0) {\n      return null;\n    }\n    const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n    outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n    return {\n      outline,\n      newCurves,\n      areContours,\n      thickness,\n      width,\n      height\n    };\n  }\n  static async compressSignature({\n    outlines,\n    areContours,\n    thickness,\n    width,\n    height\n  }) {\n    let minDiff = Infinity;\n    let maxDiff = -Infinity;\n    let outlinesLength = 0;\n    for (const points of outlines) {\n      outlinesLength += points.length;\n      for (let i = 2, ii = points.length; i < ii; i++) {\n        const dx = points[i] - points[i - 2];\n        minDiff = Math.min(minDiff, dx);\n        maxDiff = Math.max(maxDiff, dx);\n      }\n    }\n    let bufferType;\n    if (minDiff >= -128 && maxDiff <= 127) {\n      bufferType = Int8Array;\n    } else if (minDiff >= -32768 && maxDiff <= 32767) {\n      bufferType = Int16Array;\n    } else {\n      bufferType = Int32Array;\n    }\n    const len = outlines.length;\n    const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n    const header = new Uint32Array(headerLength);\n    let offset = 0;\n    header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n    header[offset++] = 0;\n    header[offset++] = width;\n    header[offset++] = height;\n    header[offset++] = areContours ? 0 : 1;\n    header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n    header[offset++] = len;\n    header[offset++] = bufferType.BYTES_PER_ELEMENT;\n    for (const points of outlines) {\n      header[offset++] = points.length - 2;\n      header[offset++] = points[0];\n      header[offset++] = points[1];\n    }\n    const cs = new CompressionStream(\"deflate-raw\");\n    const writer = cs.writable.getWriter();\n    await writer.ready;\n    writer.write(header);\n    const BufferCtor = bufferType.prototype.constructor;\n    for (const points of outlines) {\n      const diffs = new BufferCtor(points.length - 2);\n      for (let i = 2, ii = points.length; i < ii; i++) {\n        diffs[i - 2] = points[i] - points[i - 2];\n      }\n      writer.write(diffs);\n    }\n    writer.close();\n    const buf = await new Response(cs.readable).arrayBuffer();\n    const bytes = new Uint8Array(buf);\n    return toBase64Util(bytes);\n  }\n  static async decompressSignature(signatureData) {\n    try {\n      const bytes = fromBase64Util(signatureData);\n      const {\n        readable,\n        writable\n      } = new DecompressionStream(\"deflate-raw\");\n      const writer = writable.getWriter();\n      await writer.ready;\n      writer.write(bytes).then(async () => {\n        await writer.ready;\n        await writer.close();\n      }).catch(() => {});\n      let data = null;\n      let offset = 0;\n      for await (const chunk of readable) {\n        data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n        data.set(chunk, offset);\n        offset += chunk.length;\n      }\n      const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n      const version = header[1];\n      if (version !== 0) {\n        throw new Error(`Invalid version: ${version}`);\n      }\n      const width = header[2];\n      const height = header[3];\n      const areContours = header[4] === 0;\n      const thickness = header[5];\n      const numberOfDrawings = header[6];\n      const bufferType = header[7];\n      const outlines = [];\n      const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n      let diffs;\n      switch (bufferType) {\n        case Int8Array.BYTES_PER_ELEMENT:\n          diffs = new Int8Array(data.buffer, diffsOffset);\n          break;\n        case Int16Array.BYTES_PER_ELEMENT:\n          diffs = new Int16Array(data.buffer, diffsOffset);\n          break;\n        case Int32Array.BYTES_PER_ELEMENT:\n          diffs = new Int32Array(data.buffer, diffsOffset);\n          break;\n      }\n      offset = 0;\n      for (let i = 0; i < numberOfDrawings; i++) {\n        const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n        const points = new Float32Array(len + 2);\n        outlines.push(points);\n        for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n          points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n        }\n        for (let j = 0; j < len; j++) {\n          points[j + 2] = points[j] + diffs[offset++];\n        }\n      }\n      return {\n        areContours,\n        thickness,\n        outlines,\n        width,\n        height\n      };\n    } catch (e) {\n      warn(`decompressSignature: ${e}`);\n      return null;\n    }\n  }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n  constructor() {\n    super();\n    super.updateProperties({\n      fill: \"CanvasText\",\n      \"stroke-width\": 0\n    });\n  }\n  clone() {\n    const clone = new SignatureOptions();\n    clone.updateAll(this);\n    return clone;\n  }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n  constructor(viewerParameters) {\n    super(viewerParameters);\n    super.updateProperties({\n      stroke: \"CanvasText\",\n      \"stroke-width\": 1\n    });\n  }\n  clone() {\n    const clone = new DrawnSignatureOptions(this._viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\nclass SignatureEditor extends DrawingEditor {\n  #isExtracted = false;\n  #description = null;\n  #signatureData = null;\n  #signatureUUID = null;\n  static _type = \"signature\";\n  static _editorType = AnnotationEditorType.SIGNATURE;\n  static _defaultDrawingOptions = null;\n  constructor(params) {\n    super({\n      ...params,\n      mustBeCommitted: true,\n      name: \"signatureEditor\"\n    });\n    this._willKeepAspectRatio = true;\n    this.#signatureData = params.signatureData || null;\n    this.#description = null;\n    this.defaultL10nId = \"pdfjs-editor-signature-editor\";\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    this._defaultDrawingOptions = new SignatureOptions();\n    this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n  }\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n  static get supportMultipleDrawings() {\n    return false;\n  }\n  static get typesMap() {\n    return shadow(this, \"typesMap\", new Map());\n  }\n  static get isDrawer() {\n    return false;\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"signature\",\n      hasDescription: !!this.#description\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    const hasDescriptionStats = data.get(\"hasDescription\");\n    return {\n      hasAltText: hasDescriptionStats.get(true) ?? 0,\n      hasNoAltText: hasDescriptionStats.get(false) ?? 0\n    };\n  }\n  get isResizable() {\n    return true;\n  }\n  onScaleChanging() {\n    if (this._drawId === null) {\n      return;\n    }\n    super.onScaleChanging();\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    const {\n      _isCopy\n    } = this;\n    if (_isCopy) {\n      this._isCopy = false;\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    if (this._drawId === null) {\n      if (this.#signatureData) {\n        const {\n          lines,\n          mustSmooth,\n          areContours,\n          description,\n          uuid,\n          heightInPage\n        } = this.#signatureData;\n        const {\n          rawDims: {\n            pageWidth,\n            pageHeight\n          },\n          rotation\n        } = this.parent.viewport;\n        const outline = SignatureExtractor.processDrawnLines({\n          lines,\n          pageWidth,\n          pageHeight,\n          rotation,\n          innerMargin: SignatureEditor._INNER_MARGIN,\n          mustSmooth,\n          areContours\n        });\n        this.addSignature(outline, heightInPage, description, uuid);\n      } else {\n        this.div.hidden = true;\n        this._uiManager.getSignature(this);\n      }\n    }\n    if (_isCopy) {\n      this._isCopy = true;\n      this._moveAfterPaste(baseX, baseY);\n    }\n    return this.div;\n  }\n  setUuid(uuid) {\n    this.#signatureUUID = uuid;\n    this.addEditToolbar();\n  }\n  getUuid() {\n    return this.#signatureUUID;\n  }\n  get description() {\n    return this.#description;\n  }\n  set description(description) {\n    this.#description = description;\n    super.addEditToolbar().then(toolbar => {\n      toolbar?.updateEditSignatureButton(description);\n    });\n  }\n  getSignaturePreview() {\n    const {\n      newCurves,\n      areContours,\n      thickness,\n      width,\n      height\n    } = this.#signatureData;\n    const maxDim = Math.max(width, height);\n    const outlineData = SignatureExtractor.processDrawnLines({\n      lines: {\n        curves: newCurves.map(points => ({\n          points\n        })),\n        thickness,\n        width,\n        height\n      },\n      pageWidth: maxDim,\n      pageHeight: maxDim,\n      rotation: 0,\n      innerMargin: 0,\n      mustSmooth: false,\n      areContours\n    });\n    return {\n      areContours,\n      outline: outlineData.outline\n    };\n  }\n  async addEditToolbar() {\n    const toolbar = await super.addEditToolbar();\n    if (!toolbar) {\n      return null;\n    }\n    if (this._uiManager.signatureManager && this.#description !== null) {\n      await toolbar.addEditSignatureButton(this._uiManager.signatureManager, this.#signatureUUID, this.#description);\n      toolbar.show();\n    }\n    return toolbar;\n  }\n  addSignature(data, heightInPage, description, uuid) {\n    const {\n      x: savedX,\n      y: savedY\n    } = this;\n    const {\n      outline\n    } = this.#signatureData = data;\n    this.#isExtracted = outline instanceof ContourDrawOutline;\n    this.#description = description;\n    this.div.setAttribute(\"aria-description\", description);\n    let drawingOptions;\n    if (this.#isExtracted) {\n      drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n    } else {\n      drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n      drawingOptions.updateProperties({\n        \"stroke-width\": outline.thickness\n      });\n    }\n    this._addOutlines({\n      drawOutlines: outline,\n      drawingOptions\n    });\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const [, pageHeight] = this.pageDimensions;\n    let newHeight = heightInPage / pageHeight;\n    newHeight = newHeight >= 1 ? 0.5 : newHeight;\n    this.width *= newHeight / this.height;\n    if (this.width >= 1) {\n      newHeight *= 0.9 / this.width;\n      this.width = 0.9;\n    }\n    this.height = newHeight;\n    this.setDims(parentWidth * this.width, parentHeight * this.height);\n    this.x = savedX;\n    this.y = savedY;\n    this.center();\n    this._onResized();\n    this.onScaleChanging();\n    this.rotate();\n    this._uiManager.addToAnnotationStorage(this);\n    this.setUuid(uuid);\n    this._reportTelemetry({\n      action: \"pdfjs.signature.inserted\",\n      data: {\n        hasBeenSaved: !!uuid,\n        hasDescription: !!description\n      }\n    });\n    this.div.hidden = false;\n  }\n  getFromImage(bitmap) {\n    const {\n      rawDims: {\n        pageWidth,\n        pageHeight\n      },\n      rotation\n    } = this.parent.viewport;\n    return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n  }\n  getFromText(text, fontInfo) {\n    const {\n      rawDims: {\n        pageWidth,\n        pageHeight\n      },\n      rotation\n    } = this.parent.viewport;\n    return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n  }\n  getDrawnSignature(curves) {\n    const {\n      rawDims: {\n        pageWidth,\n        pageHeight\n      },\n      rotation\n    } = this.parent.viewport;\n    return SignatureExtractor.processDrawnLines({\n      lines: curves,\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin: SignatureEditor._INNER_MARGIN,\n      mustSmooth: false,\n      areContours: false\n    });\n  }\n  createDrawingOptions({\n    areContours,\n    thickness\n  }) {\n    if (areContours) {\n      this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n    } else {\n      this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n      this._drawingOptions.updateProperties({\n        \"stroke-width\": thickness\n      });\n    }\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    const {\n      lines,\n      points,\n      rect\n    } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: {\n        \"stroke-width\": thickness\n      }\n    } = this;\n    const serialized = {\n      annotationType: AnnotationEditorType.SIGNATURE,\n      isSignature: true,\n      areContours: this.#isExtracted,\n      color: [0, 0, 0],\n      thickness: this.#isExtracted ? 0 : thickness,\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      serialized.paths = {\n        lines,\n        points\n      };\n      serialized.uuid = this.#signatureUUID;\n      serialized.isCopy = true;\n    } else {\n      serialized.lines = lines;\n    }\n    if (this.#description) {\n      serialized.accessibilityData = {\n        type: \"Figure\",\n        alt: this.#description\n      };\n    }\n    return serialized;\n  }\n  static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n    if (data.areContours) {\n      return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n    }\n    return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n  }\n  static async deserialize(data, parent, uiManager) {\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#isExtracted = data.areContours;\n    editor.#description = data.accessibilityData?.alt || \"\";\n    editor.#signatureUUID = data.uuid;\n    return editor;\n  }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n  #bitmapId = null;\n  #bitmapPromise = null;\n  #bitmapUrl = null;\n  #bitmapFile = null;\n  #bitmapFileName = \"\";\n  #canvas = null;\n  #missingCanvas = false;\n  #resizeTimeoutId = null;\n  #isSvg = false;\n  #hasBeenAddedInUndoStack = false;\n  static _type = \"stamp\";\n  static _editorType = AnnotationEditorType.STAMP;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"stampEditor\"\n    });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n    this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n  }\n  static isHandlingMimeForPasting(mime) {\n    return SupportedImageMimeTypes.includes(mime);\n  }\n  static paste(item, parent) {\n    parent.pasteEditor(AnnotationEditorType.STAMP, {\n      bitmapFile: item.getAsFile()\n    });\n  }\n  altTextFinish() {\n    if (this._uiManager.useNewAltTextFlow) {\n      this.div.hidden = false;\n    }\n    super.altTextFinish();\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"stamp\",\n      hasAltText: !!this.altTextData?.altText\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    const hasAltTextStats = data.get(\"hasAltText\");\n    return {\n      hasAltText: hasAltTextStats.get(true) ?? 0,\n      hasNoAltText: hasAltTextStats.get(false) ?? 0\n    };\n  }\n  #getBitmapFetched(data, fromId = false) {\n    if (!data) {\n      this.remove();\n      return;\n    }\n    this.#bitmap = data.bitmap;\n    if (!fromId) {\n      this.#bitmapId = data.id;\n      this.#isSvg = data.isSvg;\n    }\n    if (data.file) {\n      this.#bitmapFileName = data.file.name;\n    }\n    this.#createCanvas();\n  }\n  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (!this.#canvas) {\n      return;\n    }\n    if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n      this._editToolbar.hide();\n      this._uiManager.editAltText(this, true);\n      return;\n    }\n    if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n      this._reportTelemetry({\n        action: \"pdfjs.image.image_added\",\n        data: {\n          alt_text_modal: false,\n          alt_text_type: \"empty\"\n        }\n      });\n      try {\n        this.mlGuessAltText();\n      } catch {}\n    }\n    this.div.focus();\n  }\n  async mlGuessAltText(imageData = null, updateAltTextData = true) {\n    if (this.hasAltTextData()) {\n      return null;\n    }\n    const {\n      mlManager\n    } = this._uiManager;\n    if (!mlManager) {\n      throw new Error(\"No ML.\");\n    }\n    if (!(await mlManager.isEnabledFor(\"altText\"))) {\n      throw new Error(\"ML isn't enabled for alt text.\");\n    }\n    const {\n      data,\n      width,\n      height\n    } = imageData || this.copyCanvas(null, null, true).imageData;\n    const response = await mlManager.guess({\n      name: \"altText\",\n      request: {\n        data,\n        width,\n        height,\n        channels: data.length / (width * height)\n      }\n    });\n    if (!response) {\n      throw new Error(\"No response from the AI service.\");\n    }\n    if (response.error) {\n      throw new Error(\"Error from the AI service.\");\n    }\n    if (response.cancel) {\n      return null;\n    }\n    if (!response.output) {\n      throw new Error(\"No valid response from the AI service.\");\n    }\n    const altText = response.output;\n    await this.setGuessedAltText(altText);\n    if (updateAltTextData && !this.hasAltTextData()) {\n      this.altTextData = {\n        alt: altText,\n        decorative: false\n      };\n    }\n    return altText;\n  }\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    if (this.#bitmapUrl) {\n      const url = this.#bitmapUrl;\n      this.#bitmapUrl = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    if (this.#bitmapFile) {\n      const file = this.#bitmapFile;\n      this.#bitmapFile = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    const input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.accept = SupportedImageMimeTypes.join(\",\");\n    const signal = this._uiManager._signal;\n    this.#bitmapPromise = new Promise(resolve => {\n      input.addEventListener(\"change\", async () => {\n        if (!input.files || input.files.length === 0) {\n          this.remove();\n        } else {\n          this._uiManager.enableWaiting(true);\n          const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n          this._reportTelemetry({\n            action: \"pdfjs.image.image_selected\",\n            data: {\n              alt_text_modal: this._uiManager.useNewAltTextFlow\n            }\n          });\n          this.#getBitmapFetched(data);\n        }\n        resolve();\n      }, {\n        signal\n      });\n      input.addEventListener(\"cancel\", () => {\n        this.remove();\n        resolve();\n      }, {\n        signal\n      });\n    }).finally(() => this.#getBitmapDone());\n    input.click();\n  }\n  remove() {\n    if (this.#bitmapId) {\n      this.#bitmap = null;\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\n      this.#canvas?.remove();\n      this.#canvas = null;\n      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (this.#bitmapId && this.#canvas === null) {\n      this.#getBitmap();\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  onceAdded(focus) {\n    this._isDraggable = true;\n    if (focus) {\n      this.div.focus();\n    }\n  }\n  isEmpty() {\n    return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n  }\n  get isResizable() {\n    return true;\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this._isCopy) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.div.hidden = true;\n    this.addAltTextButton();\n    if (!this.#missingCanvas) {\n      if (this.#bitmap) {\n        this.#createCanvas();\n      } else {\n        this.#getBitmap();\n      }\n    }\n    if (this._isCopy) {\n      this._moveAfterPaste(baseX, baseY);\n    }\n    this._uiManager.addShouldRescale(this);\n    return this.div;\n  }\n  setCanvas(annotationElementId, canvas) {\n    const {\n      id: bitmapId,\n      bitmap\n    } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n    canvas.remove();\n    if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n      this.#bitmapId = bitmapId;\n      if (bitmap) {\n        this.#bitmap = bitmap;\n      }\n      this.#missingCanvas = false;\n      this.#createCanvas();\n    }\n  }\n  _onResized() {\n    this.onScaleChanging();\n  }\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap();\n    }, TIME_TO_WAIT);\n  }\n  #createCanvas() {\n    const {\n      div\n    } = this;\n    let {\n      width,\n      height\n    } = this.#bitmap;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const MAX_RATIO = 0.75;\n    if (this.width) {\n      width = this.width * pageWidth;\n      height = this.height * pageHeight;\n    } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n      const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n      width *= factor;\n      height *= factor;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n    this._uiManager.enableWaiting(false);\n    const canvas = this.#canvas = document.createElement(\"canvas\");\n    canvas.setAttribute(\"role\", \"img\");\n    this.addContainer(canvas);\n    this.width = width / pageWidth;\n    this.height = height / pageHeight;\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n    if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n      div.hidden = false;\n    }\n    this.#drawBitmap();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n    this._reportTelemetry({\n      action: \"inserted_image\"\n    });\n    if (this.#bitmapFileName) {\n      this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n    }\n  }\n  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n    if (!maxDataDimension) {\n      maxDataDimension = 224;\n    }\n    const {\n      width: bitmapWidth,\n      height: bitmapHeight\n    } = this.#bitmap;\n    const outputScale = new OutputScale();\n    let bitmap = this.#bitmap;\n    let width = bitmapWidth,\n      height = bitmapHeight;\n    let canvas = null;\n    if (maxPreviewDimension) {\n      if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n        const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n        width = Math.floor(bitmapWidth * ratio);\n        height = Math.floor(bitmapHeight * ratio);\n      }\n      canvas = document.createElement(\"canvas\");\n      const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n      const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n      if (!this.#isSvg) {\n        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n      }\n      const ctx = canvas.getContext(\"2d\");\n      ctx.filter = this._uiManager.hcmFilter;\n      let white = \"white\",\n        black = \"#cfcfd8\";\n      if (this._uiManager.hcmFilter !== \"none\") {\n        black = \"black\";\n      } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n        white = \"#8f8f9d\";\n        black = \"#42414d\";\n      }\n      const boxDim = 15;\n      const boxDimWidth = boxDim * outputScale.sx;\n      const boxDimHeight = boxDim * outputScale.sy;\n      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n      const patternCtx = pattern.getContext(\"2d\");\n      patternCtx.fillStyle = white;\n      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n      patternCtx.fillStyle = black;\n      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n      ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n      ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n    }\n    let imageData = null;\n    if (createImageData) {\n      let dataWidth, dataHeight;\n      if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n        dataWidth = bitmap.width;\n        dataHeight = bitmap.height;\n      } else {\n        bitmap = this.#bitmap;\n        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n          const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n          dataWidth = Math.floor(bitmapWidth * ratio);\n          dataHeight = Math.floor(bitmapHeight * ratio);\n          if (!this.#isSvg) {\n            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n          }\n        }\n      }\n      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n      const offscreenCtx = offscreen.getContext(\"2d\", {\n        willReadFrequently: true\n      });\n      offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n      imageData = {\n        width: dataWidth,\n        height: dataHeight,\n        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n      };\n    }\n    return {\n      canvas,\n      width,\n      height,\n      imageData\n    };\n  }\n  #scaleBitmap(width, height) {\n    const {\n      width: bitmapWidth,\n      height: bitmapHeight\n    } = this.#bitmap;\n    let newWidth = bitmapWidth;\n    let newHeight = bitmapHeight;\n    let bitmap = this.#bitmap;\n    while (newWidth > 2 * width || newHeight > 2 * height) {\n      const prevWidth = newWidth;\n      const prevHeight = newHeight;\n      if (newWidth > 2 * width) {\n        newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n      }\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n      bitmap = offscreen.transferToImageBitmap();\n    }\n    return bitmap;\n  }\n  #drawBitmap() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      width,\n      height\n    } = this;\n    const outputScale = new OutputScale();\n    const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n    const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n    const canvas = this.#canvas;\n    if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n      return;\n    }\n    canvas.width = scaledWidth;\n    canvas.height = scaledHeight;\n    const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n  }\n  #serializeBitmap(toUrl) {\n    if (toUrl) {\n      if (this.#isSvg) {\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n        if (url) {\n          return url;\n        }\n      }\n      const canvas = document.createElement(\"canvas\");\n      ({\n        width: canvas.width,\n        height: canvas.height\n      } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n      return canvas.toDataURL();\n    }\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n      const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n      return offscreen.transferToImageBitmap();\n    }\n    return structuredClone(this.#bitmap);\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    let missingCanvas = false;\n    if (data instanceof StampAnnotationElement) {\n      const {\n        data: {\n          rect,\n          rotation,\n          id,\n          structParent,\n          popupRef\n        },\n        container,\n        parent: {\n          page: {\n            pageNumber\n          }\n        },\n        canvas\n      } = data;\n      let bitmapId, bitmap;\n      if (canvas) {\n        delete data.canvas;\n        ({\n          id: bitmapId,\n          bitmap\n        } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n        canvas.remove();\n      } else {\n        missingCanvas = true;\n        data._hasNoCanvas = true;\n      }\n      const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n      initialData = data = {\n        annotationType: AnnotationEditorType.STAMP,\n        bitmapId,\n        bitmap,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        accessibilityData: {\n          decorative: false,\n          altText\n        },\n        isSvg: false,\n        structParent,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    const {\n      rect,\n      bitmap,\n      bitmapUrl,\n      bitmapId,\n      isSvg,\n      accessibilityData\n    } = data;\n    if (missingCanvas) {\n      uiManager.addMissingCanvas(data.id, editor);\n      editor.#missingCanvas = true;\n    } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n      if (bitmap) {\n        editor.#bitmap = bitmap;\n      }\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n    editor.annotationElementId = data.id || null;\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n    editor._initialData = initialData;\n    editor.#hasBeenAddedInUndoStack = !!initialData;\n    return editor;\n  }\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const serialized = {\n      annotationType: AnnotationEditorType.STAMP,\n      bitmapId: this.#bitmapId,\n      pageIndex: this.pageIndex,\n      rect: this.getRect(0, 0),\n      rotation: this.rotation,\n      isSvg: this.#isSvg,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      serialized.bitmapUrl = this.#serializeBitmap(true);\n      serialized.accessibilityData = this.serializeAltText(true);\n      serialized.isCopy = true;\n      return serialized;\n    }\n    const {\n      decorative,\n      altText\n    } = this.serializeAltText(false);\n    if (!decorative && altText) {\n      serialized.accessibilityData = {\n        type: \"Figure\",\n        alt: altText\n      };\n    }\n    if (this.annotationElementId) {\n      const changes = this.#hasElementChanged(serialized);\n      if (changes.isSame) {\n        return null;\n      }\n      if (changes.isSameAltText) {\n        delete serialized.accessibilityData;\n      } else {\n        serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n      }\n    }\n    serialized.id = this.annotationElementId;\n    if (context === null) {\n      return serialized;\n    }\n    context.stamps ||= new Map();\n    const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      context.stamps.set(this.#bitmapId, {\n        area,\n        serialized\n      });\n      serialized.bitmap = this.#serializeBitmap(false);\n    } else if (this.#isSvg) {\n      const prevData = context.stamps.get(this.#bitmapId);\n      if (area > prevData.area) {\n        prevData.area = area;\n        prevData.serialized.bitmap.close();\n        prevData.serialized.bitmap = this.#serializeBitmap(false);\n      }\n    }\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      pageIndex,\n      accessibilityData: {\n        altText\n      }\n    } = this._initialData;\n    const isSamePageIndex = serialized.pageIndex === pageIndex;\n    const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n    return {\n      isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n      isSameAltText\n    };\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n  #allowClick = false;\n  #annotationLayer = null;\n  #clickAC = null;\n  #editorFocusTimeoutId = null;\n  #editors = new Map();\n  #hadPointerDown = false;\n  #isDisabling = false;\n  #isEnabling = false;\n  #drawingAC = null;\n  #focusedElement = null;\n  #textLayer = null;\n  #textSelectionAC = null;\n  #uiManager;\n  static _initialized = false;\n  static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\n    structTreeLayer,\n    accessibilityManager,\n    annotationLayer,\n    drawLayer,\n    textLayer,\n    viewport,\n    l10n\n  }) {\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n    if (!AnnotationEditorLayer._initialized) {\n      AnnotationEditorLayer._initialized = true;\n      for (const editorType of editorTypes) {\n        editorType.initialize(l10n, uiManager);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\n    this.#uiManager = uiManager;\n    this.pageIndex = pageIndex;\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationLayer = annotationLayer;\n    this.viewport = viewport;\n    this.#textLayer = textLayer;\n    this.drawLayer = drawLayer;\n    this._structTree = structTreeLayer;\n    this.#uiManager.addLayer(this);\n  }\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n  get isInvisible() {\n    return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n  }\n  updateToolbar(mode) {\n    this.#uiManager.updateToolbar(mode);\n  }\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    switch (mode) {\n      case AnnotationEditorType.NONE:\n        this.disableTextSelection();\n        this.togglePointerEvents(false);\n        this.toggleAnnotationLayerPointerEvents(true);\n        this.disableClick();\n        return;\n      case AnnotationEditorType.INK:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n        break;\n      case AnnotationEditorType.HIGHLIGHT:\n        this.enableTextSelection();\n        this.togglePointerEvents(false);\n        this.disableClick();\n        break;\n      default:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n    }\n    this.toggleAnnotationLayerPointerEvents(false);\n    const {\n      classList\n    } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n    }\n    this.div.hidden = false;\n  }\n  hasTextLayer(textLayer) {\n    return textLayer === this.#textLayer?.div;\n  }\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n  cleanUndoStack(type) {\n    this.#uiManager.cleanUndoStack(type);\n  }\n  toggleDrawing(enabled = false) {\n    this.div.classList.toggle(\"drawing\", !enabled);\n  }\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n  toggleAnnotationLayerPointerEvents(enabled = false) {\n    this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n  }\n  async enable() {\n    this.#isEnabling = true;\n    this.div.tabIndex = 0;\n    this.togglePointerEvents(true);\n    const annotationElementIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.enableEditing();\n      editor.show(true);\n      if (editor.annotationElementId) {\n        this.#uiManager.removeChangedExistingAnnotation(editor);\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n    if (!this.#annotationLayer) {\n      this.#isEnabling = false;\n      return;\n    }\n    const editables = this.#annotationLayer.getEditableAnnotations();\n    for (const editable of editables) {\n      editable.hide();\n      if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n        continue;\n      }\n      if (annotationElementIds.has(editable.data.id)) {\n        continue;\n      }\n      const editor = await this.deserialize(editable);\n      if (!editor) {\n        continue;\n      }\n      this.addOrRebuild(editor);\n      editor.enableEditing();\n    }\n    this.#isEnabling = false;\n  }\n  disable() {\n    this.#isDisabling = true;\n    this.div.tabIndex = -1;\n    this.togglePointerEvents(false);\n    const changedAnnotations = new Map();\n    const resetAnnotations = new Map();\n    for (const editor of this.#editors.values()) {\n      editor.disableEditing();\n      if (!editor.annotationElementId) {\n        continue;\n      }\n      if (editor.serialize() !== null) {\n        changedAnnotations.set(editor.annotationElementId, editor);\n        continue;\n      } else {\n        resetAnnotations.set(editor.annotationElementId, editor);\n      }\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\n      editor.remove();\n    }\n    if (this.#annotationLayer) {\n      const editables = this.#annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const {\n          id\n        } = editable.data;\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\n          continue;\n        }\n        let editor = resetAnnotations.get(id);\n        if (editor) {\n          editor.resetAnnotationElement(editable);\n          editor.show(false);\n          editable.show();\n          continue;\n        }\n        editor = changedAnnotations.get(id);\n        if (editor) {\n          this.#uiManager.addChangedExistingAnnotation(editor);\n          if (editor.renderAnnotationElement(editable)) {\n            editor.show(false);\n          }\n        }\n        editable.show();\n      }\n    }\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const {\n      classList\n    } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n    this.disableTextSelection();\n    this.toggleAnnotationLayerPointerEvents(true);\n    this.#isDisabling = false;\n  }\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n    this.#uiManager.setActiveEditor(editor);\n  }\n  enableTextSelection() {\n    this.div.tabIndex = -1;\n    if (this.#textLayer?.div && !this.#textSelectionAC) {\n      this.#textSelectionAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n      this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n        signal\n      });\n      this.#textLayer.div.classList.add(\"highlighting\");\n    }\n  }\n  disableTextSelection() {\n    this.div.tabIndex = 0;\n    if (this.#textLayer?.div && this.#textSelectionAC) {\n      this.#textSelectionAC.abort();\n      this.#textSelectionAC = null;\n      this.#textLayer.div.classList.remove(\"highlighting\");\n    }\n  }\n  #textLayerPointerDown(event) {\n    this.#uiManager.unselectAll();\n    const {\n      target\n    } = event;\n    if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n      const {\n        isMac\n      } = util_FeatureTest.platform;\n      if (event.button !== 0 || event.ctrlKey && isMac) {\n        return;\n      }\n      this.#uiManager.showAllEditors(\"highlight\", true, true);\n      this.#textLayer.div.classList.add(\"free\");\n      this.toggleDrawing();\n      HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n        target: this.#textLayer.div,\n        x: event.x,\n        y: event.y\n      });\n      this.#textLayer.div.addEventListener(\"pointerup\", () => {\n        this.#textLayer.div.classList.remove(\"free\");\n        this.toggleDrawing(true);\n      }, {\n        once: true,\n        signal: this.#uiManager._signal\n      });\n      event.preventDefault();\n    }\n  }\n  enableClick() {\n    if (this.#clickAC) {\n      return;\n    }\n    this.#clickAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#clickAC);\n    this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n      signal\n    });\n    const pointerup = this.pointerup.bind(this);\n    this.div.addEventListener(\"pointerup\", pointerup, {\n      signal\n    });\n    this.div.addEventListener(\"pointercancel\", pointerup, {\n      signal\n    });\n  }\n  disableClick() {\n    this.#clickAC?.abort();\n    this.#clickAC = null;\n  }\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const {\n      annotationElementId\n    } = editor;\n    if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n  remove(editor) {\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n  }\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n    if (editor.parent && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\n    }\n    this.attach(editor);\n    editor.parent?.detach(editor);\n    editor.setParent(this);\n    if (editor.div && editor.isAttachedToDOM) {\n      editor.div.remove();\n      this.div.append(editor.div);\n    }\n  }\n  add(editor) {\n    if (editor.parent === this && editor.isAttachedToDOM) {\n      return;\n    }\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n    editor.fixAndSetPosition();\n    editor.onceAdded(!this.#isEnabling);\n    this.#uiManager.addToAnnotationStorage(editor);\n    editor._reportTelemetry(editor.telemetryInitialData);\n  }\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n    const {\n      activeElement\n    } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\"focusin\", () => {\n            editor._focusEventsAllowed = true;\n          }, {\n            once: true,\n            signal: this.#uiManager._signal\n          });\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n  }\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n      editor.show();\n    } else {\n      this.add(editor);\n    }\n  }\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n    this.addCommands({\n      cmd,\n      undo,\n      mustExec: false\n    });\n  }\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n  get #currentEditorType() {\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n  }\n  combinedSignal(ac) {\n    return this.#uiManager.combinedSignal(ac);\n  }\n  #createNewEditor(params) {\n    const editorType = this.#currentEditorType;\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n  canCreateNewEmptyEditor() {\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\n  }\n  async pasteEditor(mode, params) {\n    this.#uiManager.updateToolbar(mode);\n    await this.#uiManager.updateMode(mode);\n    const {\n      offsetX,\n      offsetY\n    } = this.#getCenterPoint();\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: offsetX,\n      y: offsetY,\n      uiManager: this.#uiManager,\n      isCentered: true,\n      ...params\n    });\n    if (editor) {\n      this.add(editor);\n    }\n  }\n  async deserialize(data) {\n    return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n  }\n  createAndAddNewEditor(event, isCentered, data = {}) {\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: event.offsetX,\n      y: event.offsetY,\n      uiManager: this.#uiManager,\n      isCentered,\n      ...data\n    });\n    if (editor) {\n      this.add(editor);\n    }\n    return editor;\n  }\n  #getCenterPoint() {\n    const {\n      x,\n      y,\n      width,\n      height\n    } = this.div.getBoundingClientRect();\n    const tlX = Math.max(0, x);\n    const tlY = Math.max(0, y);\n    const brX = Math.min(window.innerWidth, x + width);\n    const brY = Math.min(window.innerHeight, y + height);\n    const centerX = (tlX + brX) / 2 - x;\n    const centerY = (tlY + brY) / 2 - y;\n    const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n    return {\n      offsetX,\n      offsetY\n    };\n  }\n  addNewEditor(data = {}) {\n    this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n  }\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n  pointerup(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    if (event.target !== this.div) {\n      return;\n    }\n    if (!this.#hadPointerDown) {\n      return;\n    }\n    this.#hadPointerDown = false;\n    if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n      return;\n    }\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n    const currentMode = this.#uiManager.getMode();\n    if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n    this.createAndAddNewEditor(event, false);\n  }\n  pointerdown(event) {\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n      this.enableTextSelection();\n    }\n    if (this.#hadPointerDown) {\n      this.#hadPointerDown = false;\n      return;\n    }\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    if (event.target !== this.div) {\n      return;\n    }\n    this.#hadPointerDown = true;\n    if (this.#currentEditorType?.isDrawer) {\n      this.startDrawingSession(event);\n      return;\n    }\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n  startDrawingSession(event) {\n    this.div.focus({\n      preventScroll: true\n    });\n    if (this.#drawingAC) {\n      this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n      return;\n    }\n    this.#uiManager.setCurrentDrawingSession(this);\n    this.#drawingAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n    this.div.addEventListener(\"blur\", ({\n      relatedTarget\n    }) => {\n      if (relatedTarget && !this.div.contains(relatedTarget)) {\n        this.#focusedElement = null;\n        this.commitOrRemove();\n      }\n    }, {\n      signal\n    });\n    this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n  }\n  pause(on) {\n    if (on) {\n      const {\n        activeElement\n      } = document;\n      if (this.div.contains(activeElement)) {\n        this.#focusedElement = activeElement;\n      }\n      return;\n    }\n    if (this.#focusedElement) {\n      setTimeout(() => {\n        this.#focusedElement?.focus();\n        this.#focusedElement = null;\n      }, 0);\n    }\n  }\n  endDrawingSession(isAborted = false) {\n    if (!this.#drawingAC) {\n      return null;\n    }\n    this.#uiManager.setCurrentDrawingSession(null);\n    this.#drawingAC.abort();\n    this.#drawingAC = null;\n    this.#focusedElement = null;\n    return this.#currentEditorType.endDrawing(isAborted);\n  }\n  findNewParent(editor, x, y) {\n    const layer = this.#uiManager.findParent(x, y);\n    if (layer === null || layer === this) {\n      return false;\n    }\n    layer.changeParent(editor);\n    return true;\n  }\n  commitOrRemove() {\n    if (this.#drawingAC) {\n      this.endDrawingSession();\n      return true;\n    }\n    return false;\n  }\n  onScaleChanging() {\n    if (!this.#drawingAC) {\n      return;\n    }\n    this.#currentEditorType.onScaleChangingWhenDrawing(this);\n  }\n  destroy() {\n    this.commitOrRemove();\n    if (this.#uiManager.getActive()?.parent === this) {\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\n    }\n    for (const editor of this.#editors.values()) {\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n      editor.setParent(null);\n      editor.isAttachedToDOM = false;\n      editor.div.remove();\n    }\n    this.div = null;\n    this.#editors.clear();\n    this.#uiManager.removeLayer(this);\n  }\n  #cleanup() {\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n  }\n  render({\n    viewport\n  }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n      editor.rebuild();\n    }\n    this.updateMode();\n  }\n  update({\n    viewport\n  }) {\n    this.#uiManager.commitOrRemove();\n    this.#cleanup();\n    const oldRotation = this.viewport.rotation;\n    const rotation = viewport.rotation;\n    this.viewport = viewport;\n    setLayerDimensions(this.div, {\n      rotation\n    });\n    if (oldRotation !== rotation) {\n      for (const editor of this.#editors.values()) {\n        editor.rotate(rotation);\n      }\n    }\n  }\n  get pageDimensions() {\n    const {\n      pageWidth,\n      pageHeight\n    } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n  get scale() {\n    return this.#uiManager.viewParameters.realScale;\n  }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n  #parent = null;\n  #mapping = new Map();\n  #toUpdate = new Map();\n  static #id = 0;\n  constructor({\n    pageIndex\n  }) {\n    this.pageIndex = pageIndex;\n  }\n  setParent(parent) {\n    if (!this.#parent) {\n      this.#parent = parent;\n      return;\n    }\n    if (this.#parent !== parent) {\n      if (this.#mapping.size > 0) {\n        for (const root of this.#mapping.values()) {\n          root.remove();\n          parent.append(root);\n        }\n      }\n      this.#parent = parent;\n    }\n  }\n  static get _svgFactory() {\n    return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n  }\n  static #setBox(element, [x, y, width, height]) {\n    const {\n      style\n    } = element;\n    style.top = `${100 * y}%`;\n    style.left = `${100 * x}%`;\n    style.width = `${100 * width}%`;\n    style.height = `${100 * height}%`;\n  }\n  #createSVG() {\n    const svg = DrawLayer._svgFactory.create(1, 1, true);\n    this.#parent.append(svg);\n    svg.setAttribute(\"aria-hidden\", true);\n    return svg;\n  }\n  #createClipPath(defs, pathId) {\n    const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n    defs.append(clipPath);\n    const clipPathId = `clip_${pathId}`;\n    clipPath.setAttribute(\"id\", clipPathId);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n    clipPath.append(clipPathUse);\n    clipPathUse.setAttribute(\"href\", `#${pathId}`);\n    clipPathUse.classList.add(\"clip\");\n    return clipPathId;\n  }\n  #updateProperties(element, properties) {\n    for (const [key, value] of Object.entries(properties)) {\n      if (value === null) {\n        element.removeAttribute(key);\n      } else {\n        element.setAttribute(key, value);\n      }\n    }\n  }\n  draw(properties, isPathUpdatable = false, hasClip = false) {\n    const id = DrawLayer.#id++;\n    const root = this.#createSVG();\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n    if (isPathUpdatable) {\n      this.#toUpdate.set(id, path);\n    }\n    const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n    const use = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use);\n    use.setAttribute(\"href\", `#${pathId}`);\n    this.updateProperties(root, properties);\n    this.#mapping.set(id, root);\n    return {\n      id,\n      clipPathId: `url(#${clipPathId})`\n    };\n  }\n  drawOutline(properties, mustRemoveSelfIntersections) {\n    const id = DrawLayer.#id++;\n    const root = this.#createSVG();\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n    let maskId;\n    if (mustRemoveSelfIntersections) {\n      const mask = DrawLayer._svgFactory.createElement(\"mask\");\n      defs.append(mask);\n      maskId = `mask_p${this.pageIndex}_${id}`;\n      mask.setAttribute(\"id\", maskId);\n      mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n      const rect = DrawLayer._svgFactory.createElement(\"rect\");\n      mask.append(rect);\n      rect.setAttribute(\"width\", \"1\");\n      rect.setAttribute(\"height\", \"1\");\n      rect.setAttribute(\"fill\", \"white\");\n      const use = DrawLayer._svgFactory.createElement(\"use\");\n      mask.append(use);\n      use.setAttribute(\"href\", `#${pathId}`);\n      use.setAttribute(\"stroke\", \"none\");\n      use.setAttribute(\"fill\", \"black\");\n      use.setAttribute(\"fill-rule\", \"nonzero\");\n      use.classList.add(\"mask\");\n    }\n    const use1 = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use1);\n    use1.setAttribute(\"href\", `#${pathId}`);\n    if (maskId) {\n      use1.setAttribute(\"mask\", `url(#${maskId})`);\n    }\n    const use2 = use1.cloneNode();\n    root.append(use2);\n    use1.classList.add(\"mainOutline\");\n    use2.classList.add(\"secondaryOutline\");\n    this.updateProperties(root, properties);\n    this.#mapping.set(id, root);\n    return id;\n  }\n  finalizeDraw(id, properties) {\n    this.#toUpdate.delete(id);\n    this.updateProperties(id, properties);\n  }\n  updateProperties(elementOrId, properties) {\n    if (!properties) {\n      return;\n    }\n    const {\n      root,\n      bbox,\n      rootClass,\n      path\n    } = properties;\n    const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n    if (!element) {\n      return;\n    }\n    if (root) {\n      this.#updateProperties(element, root);\n    }\n    if (bbox) {\n      DrawLayer.#setBox(element, bbox);\n    }\n    if (rootClass) {\n      const {\n        classList\n      } = element;\n      for (const [className, value] of Object.entries(rootClass)) {\n        classList.toggle(className, value);\n      }\n    }\n    if (path) {\n      const defs = element.firstChild;\n      const pathElement = defs.firstChild;\n      this.#updateProperties(pathElement, path);\n    }\n  }\n  updateParent(id, layer) {\n    if (layer === this) {\n      return;\n    }\n    const root = this.#mapping.get(id);\n    if (!root) {\n      return;\n    }\n    layer.#parent.append(root);\n    this.#mapping.delete(id);\n    layer.#mapping.set(id, root);\n  }\n  remove(id) {\n    this.#toUpdate.delete(id);\n    if (this.#parent === null) {\n      return;\n    }\n    this.#mapping.get(id).remove();\n    this.#mapping.delete(id);\n  }\n  destroy() {\n    this.#parent = null;\n    for (const root of this.#mapping.values()) {\n      root.remove();\n    }\n    this.#mapping.clear();\n    this.#toUpdate.clear();\n  }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"5.0.375\";\nconst pdfjsBuild = \"23972e194\";\n{\n  globalThis.pdfjsTestingUtils = {\n    HighlightOutliner: HighlightOutliner\n  };\n}\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__AnnotationType = __webpack_exports__.AnnotationType;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MathClamp = __webpack_exports__.MathClamp;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__ResponseException = __webpack_exports__.ResponseException;\nvar __webpack_exports__SignatureExtractor = __webpack_exports__.SignatureExtractor;\nvar __webpack_exports__SupportedImageMimeTypes = __webpack_exports__.SupportedImageMimeTypes;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__TouchManager = __webpack_exports__.TouchManager;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getUuid = __webpack_exports__.getUuid;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__isValidExplicitDest = __webpack_exports__.isValidExplicitDest;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__stopEvent = __webpack_exports__.stopEvent;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__AnnotationType as AnnotationType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MathClamp as MathClamp, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__ResponseException as ResponseException, __webpack_exports__SignatureExtractor as SignatureExtractor, __webpack_exports__SupportedImageMimeTypes as SupportedImageMimeTypes, __webpack_exports__TextLayer as TextLayer, __webpack_exports__TouchManager as TouchManager, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getUuid as getUuid, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__isValidExplicitDest as isValidExplicitDest, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__stopEvent as stopEvent, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","async function readFileAsArrayBuffer(file) {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onload = () => {\n      resolve(reader.result);\n    };\n    reader.onerror = reject;\n    reader.readAsArrayBuffer(file);\n  });\n}\nexport default readFileAsArrayBuffer;\n","import createReactClass from 'create-react-class';\n('use strict');\n\n// Import Libraries\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\n// Import JS Modules\nimport GenericPaginatedUploadMixin from './loader-mixins/generic-paginated-upload-mixin';\nimport UploadAnalytics from './upload-analytics';\nimport { builderDispatch, PrismUI, WebUI } from '../_utils/ui';\nimport FileClearingMixin from './loader-mixins/file-clearing-mixin';\nimport FileSelectorMixin from './loader-mixins/file-selector-mixin';\nimport UploadButton from './utils/upload-button';\nimport AlbumSelector from './album-selector';\nimport CustomText from './custom-text';\nimport ImageUploadFileValidator from '../_utils/image-upload-file-validator';\nimport AnalyticsHandler from '../_libs/analytics/checkout-google-analytics';\nimport sendToGoogleAnalytics from '../_prism-builder/desktop/slot-tools/send-to-google-analytics';\nimport { db } from '../_utils/db/db';\nimport { uploadUrl } from '../_prism-builder/desktop/lib/add-photos-interface';\nimport { compressImage } from '../_utils/db/image-manip-helpers';\nimport heic2any from 'heic2any';\nimport { usePrismItemStore } from 'stores/usePrismItemStore';\nimport * as pdfjsLib from \"pdfjs-dist\";\nimport readFileAsArrayBuffer from '../_utils/readFileAsArrayBuffer';\n\nconst LocalFileImportIndexedDB = createReactClass({\n  mixins: [GenericPaginatedUploadMixin, FileSelectorMixin, FileClearingMixin],\n  displayName: 'Local file import native',\n\n  getInitialState() {\n    const { App } = window;\n    this.files = this.files || [];\n\n    return {\n      loggedIn: App && App.order.logged_in(),\n    };\n  },\n  componentDidMount() {\n    this.builderDispatchToken = builderDispatch.register(payload => {\n      if (payload.type === WebUI.LOGIN) {\n        this.setState({\n          loggedIn: true,\n        });\n      }\n    });\n    const component = ReactDOM.findDOMNode(this);\n    component.addEventListener('dragover', this.handleDragOver, false);\n    component.addEventListener('dragenter', this.handleDragEnter, false);\n    component.addEventListener('dragleave', this.handleDragLeave, false);\n    component.addEventListener('drop', this.handleDrop, false);\n  },\n  componentWillUnmount() {\n    const component = ReactDOM.findDOMNode(this);\n    component.removeEventListener('dragover', this.handleDragOver, false);\n    component.removeEventListener('dragenter', this.handleDragEnter, false);\n    component.removeEventListener('dragleave', this.handleDragLeave, false);\n    component.removeEventListener('drop', this.handleDrop, false);\n  },\n  sendAnalytics(eventCategory) {\n    const eventLabel = UploadAnalytics.eventTypes(\n      this.files.map(f => f.uploadAnalytics)\n    );\n\n    const payload = {\n      type: WebUI.Analytics.SEND,\n      eventCategory: eventCategory,\n      eventAction: 'device',\n      eventLabel: eventLabel,\n      eventValue: this.files.length,\n    };\n\n    AnalyticsHandler.handleAnalyticsEvent(payload);\n  },\n\n  render() {\n    return (\n      <div\n        id={'image-loader-service-' + this.props.service}\n        style={{ height: this.props.height }}\n        className={classNames(\n          'text-center image-loader-service',\n          this.props.service,\n          { 'd-none': !this.props.isActive }\n        )}\n        tabIndex=\"0\">\n        <div className=\"d-flex d-md-none h-100 flex-column justify-content-center\">\n          <i className=\"d-none d-lg-block large fas fa-laptop\" />\n          <i className=\"mx-auto d-lg-none large fas fa-mobile-alt\" />\n          <h3 className=\"title service-title font-weight-bold\">My Phone</h3>\n          <small>Upload photos from your phone.</small>\n          <div className=\"mobile-file-upload-btn\">\n            <UploadButton\n              label=\"Upload\"\n              ariaLabel=\"Upload\"\n              onChange={this.handleFileInputChange}\n              fileValidator={this.props.fileValidator}\n            />\n          </div>\n          <CustomText\n            textKey=\"imageLoaderLocalFileImportBannerHtml\"\n            className=\"local-file-import-banner local-file-import-banner-mweb d-none\"\n          />\n        </div>\n        <div id=\"fileList\" />\n        <div\n          id=\"dropArea\"\n          data-test-id=\"dropArea\" // For testing purposes\n          className=\"d-none d-md-flex h-100 flex-column justify-content-center align-items-center\">\n          <div className=\"album-selector-box d-none\">\n            <div className=\"image-loader-form-elements\">\n              {!!this.state.loggedIn && (\n                <AlbumSelector\n                  targetAlbum={this.props.targetAlbum}\n                  onAlbumSelected={this.handleTargetAlbumSelected}\n                />\n              )}\n            </div>\n          </div>\n          <div className=\"device\">\n            <i className=\"large fas fa-cloud-upload-alt\" />\n            <h3 className=\"title font-weight-bold\">Drag &amp; Drop Here</h3>\n            <small className=\"d-block\">\n              * Upload jpeg, jpg, png, pdf, heic, heif or avif image formats.\n            </small>\n            <UploadButton\n              label=\"Upload Photos\"\n              ariaLabel=\"Upload\"\n              onChange={this.handleFileInputChange}\n              fileValidator={this.props.fileValidator}\n            />\n          </div>\n        </div>\n      </div>\n    );\n  },\n\n  handleTargetAlbumSelected(album) {\n    if (this.props.onTargetAlbumSelected)\n      this.props.onTargetAlbumSelected(album);\n  },\n\n  draggable() {\n    return (\n      'draggable' in document.createElement('span') && !this.props.isMobile\n    );\n  },\n\n  handleDragOver(e) {\n    e.stopPropagation();\n    e.preventDefault();\n  },\n\n  dragCounter: 0,\n  handleDragEnter(e) {\n    e.preventDefault();\n\n    if (this.dragCounter++ === 0) $('#dropArea').addClass('dragover');\n  },\n\n  handleDragLeave(e) {\n    if (--this.dragCounter === 0) $('#dropArea').removeClass('dragover');\n  },\n\n  handleDrop(e) {\n    e.preventDefault();\n\n    this.dragCounter = 0;\n    $('#dropArea').removeClass('dragover');\n\n    const files = Array.prototype.slice.apply(e.dataTransfer.files);\n    this.addFiles(files);\n    return false;\n  },\n\n  triggerFeatureTracking() {\n    sendToGoogleAnalytics('offline-local-import', '');\n  },\n\n  handleFileInputChange(e) {\n    this.triggerFeatureTracking();\n    const $fileInput = e.target;\n    const files = Array.from($fileInput.files);\n\n    if (!files.length) return;\n\n    this.addFiles(files);\n    $fileInput.value = '';\n  },\n\n  async addFiles(files) {\n    const filteredFiles = files.filter(\n      this.props.fileValidator.isAcceptedFileType\n    );\n\n    if (filteredFiles.length > 0) {\n      builderDispatch.dispatch({\n        type: WebUI.UPLOAD_BEGUN,\n        number_of_files: filteredFiles.length,\n      });\n\n      usePrismItemStore.setState(({ imagesUploadProgress }) => ({\n        imagesUploadProgress: {\n          current: 1,\n          totalFiles: filteredFiles.length,\n        },\n      }));\n\n      builderDispatch.dispatch({\n        type: PrismUI.CLOSE_ADD_PHOTOS_MODAL,\n      });\n\n      for (let uncompressedImageFile of filteredFiles) {\n        try {\n          if (uncompressedImageFile.type === 'application/pdf') {\n            await processPDF(uncompressedImageFile);\n          } else {\n            await processImage(uncompressedImageFile);\n          }\n        } catch (error) {\n          dispatchAndDisplayFailedUpload(uncompressedImageFile.name);\n          console.error('Error processing file:', error);\n        }\n      }\n    }\n  },\n  _buildFormData() {\n    return false;\n  },\n});\n\nLocalFileImportIndexedDB.defaultProps = {\n  fileValidator: new ImageUploadFileValidator(),\n};\n\nconst processFileAndUpload = async (uncompressedImageFile, processedFile) => {\n  const compressedImageForThumbnails = await compressImage(\n    processedFile || uncompressedImageFile,\n    { maxWidthOrHeight: 512 }\n  );\n\n  const fileToUpload = processedFile || uncompressedImageFile;\n\n  const fileData = {\n    file: fileToUpload,\n    compressedImage: compressedImageForThumbnails,\n    status: 'pending',\n    uploadUrl: uploadUrl(),\n    prismItemID: prismItem.num,\n  };\n\n  await db.upload.add(fileData);\n  return fileData;\n};\n\nconst convertHEICIfNeeded = async (uncompressedImageFile) => {\n  if (uncompressedImageFile.type === 'image/heic' || uncompressedImageFile.type === 'image/heif') {\n    const convertedBlob = await heic2any({\n      blob: uncompressedImageFile,\n      toType: 'image/jpeg',\n      quality: 1,\n    });\n    return new File([convertedBlob], `${uncompressedImageFile.name}.jpg`, {\n      type: 'image/jpeg',\n    });\n  }\n  return uncompressedImageFile;\n};\n\nconst processPDF = async (uncompressedImageFile) => {\n  const pdfData = await readFileAsArrayBuffer(uncompressedImageFile);\n\n  try {\n    pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdn.jsdelivr.net/npm/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.mjs`;\n\n    const pdfDoc = await pdfjsLib.getDocument({ data: pdfData }).promise;\n    const numPages = pdfDoc.numPages;\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_BEGUN,\n      number_of_files: numPages,\n    });\n\n    usePrismItemStore.setState(({ imagesUploadProgress }) => ({\n      imagesUploadProgress: {\n        current: 1,\n        totalFiles: numPages,\n      },\n    }));\n\n    sendToGoogleAnalytics('pdf-upload', numPages);\n\n    const canvasPDF = document.createElement('canvas');\n    canvasPDF.style.display = 'none';\n    document.body.appendChild(canvasPDF);\n    const ctx = canvasPDF.getContext('2d');\n\n    for (let pageNum = 1; pageNum <= numPages; pageNum++) {\n      const page = await pdfDoc.getPage(pageNum);\n      const viewport = page.getViewport({ scale: 2 });\n\n      canvasPDF.width = viewport.width;\n      canvasPDF.height = viewport.height;\n\n      await page.render({\n        canvasContext: ctx,\n        viewport: viewport,\n        background: 'rgba(0,0,0,0)',\n      }).promise;\n\n      const blob = await new Promise((resolve) => canvasPDF.toBlob(resolve, 'image/png'));\n      const fileName = `${uncompressedImageFile.name}-${pageNum}.png`;\n      const newFile = new File([blob], fileName, { type: 'image/png' });\n\n      await processFileAndUpload(uncompressedImageFile, newFile);\n    }\n    document.body.removeChild(canvasPDF);\n  } catch (error) {\n    dispatchAndDisplayFailedUpload(uncompressedImageFile.name);\n    console.error('Error processing PDF:', error);\n  }\n};\n\nconst dispatchAndDisplayFailedUpload = (fileName) => {\n  builderDispatch.dispatch({\n    type: WebUI.UPLOAD_PROGRESS,\n  });\n\n  usePrismItemStore.getState().trackProgress();\n\n  usePrismItemStore.setState(({ failedImagesUploaded }) => ({\n    failedImagesUploaded: [...failedImagesUploaded, fileName],\n  }));\n\n}\n\nconst processImage = async (uncompressedImageFile) => {\n  const convertedFile = await convertHEICIfNeeded(uncompressedImageFile);\n  await processFileAndUpload(uncompressedImageFile, convertedFile);\n};\n\nexport default LocalFileImportIndexedDB;\n","import MyPhotosImport from './album-import/my-photos-import';\nimport CloudImport from './cloud-import';\nimport LocalFileImport from './local-file-import';\nimport MyMobileImport from './mobile-import';\nimport LocalFileImportIndexedDB from './local-file-import-indexeddb';\nimport { useGenStore } from 'stores/useGenStore';\n\nconst computeSources = (isSafariPrivate) => {\n  return [\n    {\n      title: 'My Mobile',\n      component: MyMobileImport,\n      service: 'mobile',\n    },\n    {\n      title: 'My Computer',\n      component: window.prismItem\n        ? window.featureFlags.indexed_db_uploader && !isSafariPrivate\n          ? LocalFileImportIndexedDB\n          : LocalFileImport\n        : LocalFileImport,\n      service: 'upload',\n    },\n    {\n      title: 'My Photos',\n      component: MyPhotosImport,\n      service: 'albums',\n    },\n    {\n      title: 'Google',\n      component: CloudImport,\n      service: 'picasa',\n    },\n    {\n      title: 'Facebook',\n      component: CloudImport,\n      service: 'facebook',\n    },\n    {\n      title: 'Dropbox',\n      component: CloudImport,\n      service: 'dropbox',\n    },\n    {\n      title: 'Instagram',\n      component: CloudImport,\n      service: 'instagram',\n    },\n    {\n      title: 'Flickr',\n      component: CloudImport,\n      service: 'flickr',\n    },\n  ].filter(({ service }) =>\n    service === 'mobile' ? MyMobileImport.isActive() : true,\n  );\n};\n\nconst getImageSources = () => {\n  const isSafariPrivate = useGenStore.getState().isSafariPrivate;\n\n  const imageSources = computeSources(isSafariPrivate);\n\n  return imageSources;\n};\n\nexport default getImageSources;\n","\nimport { builderDispatch, WebUI } from '../../_utils/ui';\n\nlet notifyTimeout;\n\nconst service = function (service) {\n  if (typeof builderDispatch === 'undefined') {\n    return;\n  } // sanity check !\n\n  builderDispatch.dispatch({\n    type: WebUI.PHOTO_SERVICE_SELECTED,\n    service\n  });\n};\n\nconst clickEvent = function (event) {\n  if (typeof builderDispatch === 'undefined') {\n    return;\n  } // sanity check !\n\n  clearTimeout(notifyTimeout);\n\n  notifyTimeout = setTimeout(() => {\n    builderDispatch.dispatch({\n      type: WebUI.PHOTO_EVENT_UPLOAD,\n      uploadEvent: event\n    });\n  }, 100);\n};\n\nexport default {\n  service,\n  clickEvent,\n};\n","// Import Libraries\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\n// Import JS Modules\nimport { builderDispatch, WebUI, PrismUI } from '../../_utils/ui';\nimport getImageSources from '../image-sources';\nimport notifications from '../utils/notifications';\nimport LoaderAdditionalOptions from '../additional-options';\nimport ImageUploadFileValidator from '../../_utils/image-upload-file-validator';\n\nconst LoaderBase = {\n  getChildContext() {\n    const { additionalOptions = {} } = this.state;\n\n    return {\n      additionalOptions,\n    };\n  },\n\n  componentDidMount() {\n    window.addEventListener('orientationchange', this.handleOrientationChanged);\n    window.addEventListener('keydown', this.handleKeyDown);\n\n    this.builderDispatchToken = builderDispatch.register(payload => {\n      window.requestAnimationFrame(() => {\n        switch (payload.type) {\n          case PrismUI.ADD_PHOTOS:\n            this.begin(\n              payload.upload_url,\n              payload.excludeServices,\n              payload.callToActionButtonText,\n              payload.callToActionButtonEvent,\n              payload.additionalOptions\n            );\n            break;\n\n          case WebUI.UPLOAD_SHOW_FAILURES:\n            this.errorMessage = payload.message;\n\n            if (payload.number_of_errors) {\n              this.number_of_errors =\n                this.number_of_errors + payload.number_of_errors;\n            }\n\n            this.showFailures();\n            break;\n\n          case PrismUI.CLOSE_ADD_PHOTOS_MODAL:\n            this.close();\n            break;\n\n          case PrismUI.CLOUD_SERVICE_HEADER:\n            this.setState({ serviceHeaderMounted: payload.mounted });\n            break;\n\n          case WebUI.UPLOAD_ERROR:\n          case WebUI.UPLOAD_BEGUN:\n          case PrismUI.IMAGES_UPDATED:\n            this.setState({ loading: false });\n            break;\n        }\n      });\n    });\n\n    $(window)\n      .on('offline', this.handleGoneOffline)\n      .on('online', this.handleGoneOnline);\n\n    $(ReactDOM.findDOMNode(this))\n      .modal({\n        show: false,\n      })\n      .on('hide.bs.modal', e => {\n        const { showUploadErrorsModal, showFailures } = this.state;\n\n        if (showUploadErrorsModal) {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          this.toggleUploadErrorsModal();\n\n          return false;\n        }\n\n        this.setState({ focus: false, uploadErrors: [] });\n\n        if (showFailures) {\n          this.handleAbort();\n        }\n      })\n      .on('hidden.bs.modal', () => {\n        builderDispatch.dispatch({\n          type: WebUI.UPLOAD_CLOSED,\n        });\n      });\n\n    $(ReactDOM.findDOMNode(this)).on('shown.bs.modal', () => {\n      this.setState({ focus: true });\n    });\n  },\n\n  componentWillUnmount() {\n    builderDispatch.unregister(this.builderDispatchToken);\n\n    $(window)\n      .off('offline', this.handleGoneOffline)\n      .off('online', this.handleGoneOnline);\n\n    window.removeEventListener(\n      'orientationchange',\n      this.handleOrientationChanged\n    );\n  },\n\n  open() {\n    $(ReactDOM.findDOMNode(this)).modal('show');\n  },\n\n  close() {\n    this.setState(() => ({ uploadErrors: [] }));\n\n    $(ReactDOM.findDOMNode(this)).modal('hide');\n  },\n\n  begin(\n    url,\n    excludeServices = [],\n    callToActionButtonText,\n    callToActionButtonEvent,\n    additionalOptions = {}\n  ) {\n    const { loading } = this.state;\n    if (!App.order.storage_provider_present) {\n      excludeServices.push('albums');\n    }\n\n    if (loading) return this.close();\n\n    this.clearAll();\n    this.setState(\n      ({ target_album: prevTargetAlbum }) => {\n        const extraFileTypes =\n          additionalOptions[LoaderAdditionalOptions.EXTRA_FILE_TYPES] || [];\n        return {\n          upload_url: url,\n          excludeServices: [].concat(excludeServices),\n          callToActionButtonText,\n          callToActionButtonEvent,\n          additionalOptions,\n          hideMenu: this.state.serviceHeaderMounted,\n          uploadSource: additionalOptions.uploadSource,\n          target_album:\n            additionalOptions[LoaderAdditionalOptions.TARGET_ALBUM] ||\n            prevTargetAlbum,\n          fileUploadValidator: new ImageUploadFileValidator({\n            extraFileTypes: extraFileTypes,\n          }),\n        };\n      },\n      () => {\n        this.open();\n      }\n    );\n  },\n\n  handleSourceSelect(source_index, service) {\n    this.setState({ source: source_index });\n    notifications.service(service);\n  },\n\n  previews() {\n    const imageSources = getImageSources();\n    return imageSources.reduce((memo, source) => {\n      const implementation = this.refs[source.service];\n      if (implementation) {\n        memo = memo.concat(implementation.filesSelected());\n      }\n      return memo;\n    }, []);\n  },\n\n  handleFilesSelected() {\n    const {\n      additionalOptions = {},\n      source: sourceIdx,\n    } = this.state;\n\n    const imageSources = getImageSources();\n    const source = imageSources[sourceIdx]?.component,\n          sourceAutoUploads = source?.prototype?.[LoaderAdditionalOptions.CLOSE_ON_FILE_SELECTION],\n          pageAutoUploads = additionalOptions[LoaderAdditionalOptions.CLOSE_ON_FILE_SELECTION];\n\n    if (pageAutoUploads || sourceAutoUploads) {\n      this.handleAddImages();\n    }\n\n    this.forceUpdate();\n  },\n\n  handleImagePreviewError(file) {\n    if (!this.state.uploadErrors.includes(file)) {\n      this.setState(prevState => ({\n        uploadErrors: [...prevState.uploadErrors, file],\n      }));\n    }\n  },\n\n  toggleUploadErrorsModal() {\n    this.setState(prevState => ({\n      showUploadErrorsModal: !prevState.showUploadErrorsModal,\n    }));\n  },\n\n  removeAllUploadErrorsClick() {\n    this.filterBrokenImages();\n\n    this.setState(() => ({ uploadErrors: [], showUploadErrorsModal: false }));\n  },\n\n  handleRemovePreview(file) {\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_PHOTO_REMOVED_FROM_TRAY,\n      key: file.originalKey || file.url,\n      service: file.service,\n    });\n\n    const implementation = this.refs[file.service];\n\n    if (implementation) {\n      implementation.removeFile(file);\n    }\n\n    if (this.state.uploadErrors) {\n      this.setState(prevState => {\n        const result = prevState.uploadErrors.filter(error => error !== file);\n        return { uploadErrors: result };\n      });\n    }\n\n    this.forceUpdate();\n  },\n\n  totalNumberOfFilesToUpload() {\n    const imageSources = getImageSources();\n    return imageSources.reduce((memo, source) => {\n      const implementation = this.refs[source.service];\n      if (!!implementation && implementation.files) {\n        memo += implementation.totalNumberOfFilesSelected();\n      }\n      return memo;\n    }, 0);\n  },\n\n  performUpload(upload_url = this.state.upload_url, additionalData) {\n    this.close();\n\n    // needs to change to CTABE when defined.\n    notifications.clickEvent(this.state.callToActionButtonEvent);\n\n    this.uploaded_index = 0;\n    this.number_of_errors = 0;\n\n    if (!this.totalNumberOfFilesToUpload()) {\n      return;\n    }\n\n    builderDispatch.delayedDispatch({\n      type: WebUI.UPLOAD_BEGUN,\n      number_of_files: this.totalNumberOfFilesToUpload(),\n      ...additionalData,\n    });\n\n    const imageSources = getImageSources();\n    imageSources.forEach(source => {\n      const implementation = this.refs[source.service];\n      if (implementation) {\n        implementation.performUpload(\n          upload_url,\n          additionalData,\n          this.handleFileUploaded,\n          this.handleFileUploadError\n        );\n      }\n    });\n  },\n\n  handleFileUploaded(data, source) {\n    const totalNumberOfFilesToUpload = this.totalNumberOfFilesToUpload();\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_PROGRESS,\n      data,\n      source,\n      number_of_files: totalNumberOfFilesToUpload,\n    });\n\n    if (++this.uploaded_index === totalNumberOfFilesToUpload) {\n      builderDispatch.dispatch({\n        type: WebUI.UPLOAD_DONE,\n        number_of_files: totalNumberOfFilesToUpload,\n        number_of_errors: this.number_of_errors,\n      });\n\n      const imageSources = getImageSources();\n      imageSources.forEach(source => {\n        const implementation = this.refs[source.service];\n        if (\n          implementation &&\n          typeof implementation.sendAnalytics === 'function'\n        ) {\n          implementation.sendAnalytics('upload successful');\n        }\n      });\n    }\n  },\n\n  handleFileUploadError(message) {\n    const totalNumberOfFilesToUpload = this.totalNumberOfFilesToUpload();\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_ERROR,\n      number_of_errors: ++this.number_of_errors,\n    });\n\n    if (++this.uploaded_index === totalNumberOfFilesToUpload) {\n      builderDispatch.dispatch({\n        type: WebUI.UPLOAD_DONE,\n        number_of_files: totalNumberOfFilesToUpload,\n        number_of_errors: this.number_of_errors,\n        message: message || '',\n      });\n\n      const imageSources = getImageSources();\n      imageSources.forEach(source => {\n        const implementation = this.refs[source.service];\n        if (\n          implementation &&\n          typeof implementation.sendAnalytics === 'function'\n        ) {\n          implementation.sendAnalytics('upload failed');\n        }\n      });\n    }\n  },\n\n  handleGoneOffline() {\n    const imageSources = getImageSources();\n    imageSources.forEach(source => {\n      const implementation = this.refs[source.service];\n      if (implementation) {\n        implementation.pause();\n      }\n    });\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_PAUSED,\n    });\n  },\n\n  handleGoneOnline() {\n    const imageSources = getImageSources();\n    imageSources.forEach(source => {\n      const implementation = this.refs[source.service];\n      if (implementation) {\n        implementation.restart();\n      }\n    });\n\n    builderDispatch.dispatch({\n      type: WebUI.UPLOAD_RESUMED,\n    });\n  },\n\n  handleAbort() {\n    this.setState(\n      {\n        uploadErrors: [],\n        showFailures: false,\n      },\n      () => {\n        this.close();\n\n        window.requestAnimationFrame(() => {\n          builderDispatch.dispatch({\n            type: WebUI.UPLOAD_ABORTED,\n          });\n        });\n\n        this.clearAll();\n      }\n    );\n  },\n\n  handleOrientationChanged() {\n    setTimeout(this.setWindowSize, 100);\n  },\n\n  showFailures() {\n    const imageSources = getImageSources();\n    imageSources.forEach(source => {\n      const implementation = this.refs[source.service];\n      if (implementation) {\n        implementation.clearUploaded();\n      }\n    });\n\n    this.setState(\n      {\n        showFailures: true,\n      },\n      () => {\n        this.open();\n      }\n    );\n  },\n\n  clearAll() {\n    const imageSources = getImageSources();\n    imageSources.forEach(source => {\n      const implementation = this.refs[source.service];\n      if (implementation) {\n        implementation.clear();\n      }\n    });\n  },\n\n  handleTargetAlbumSelected(album) {\n    this.setState({\n      target_album: album,\n    });\n  },\n\n  getWindowSize() {\n    return {\n      windowHeight: window.innerHeight,\n      windowWidth: window.innerWidth,\n    };\n  },\n\n  setWindowSize() {\n    this.setState(this.getWindowSize);\n  },\n\n  filterBrokenImages() {\n    const { uploadErrors } = this.state;\n\n    const imageSources = getImageSources();\n    imageSources.reduce((memo, source) => {\n      const implementation = this.refs[source.service];\n      if (\n        implementation &&\n        !!implementation.files &&\n        implementation.files.length > 0\n      ) {\n        implementation.files = implementation.files.filter(\n          file => !uploadErrors.includes(file)\n        );\n      }\n      return memo;\n    }, []);\n  },\n};\n\nLoaderBase.childContextTypes = {\n  additionalOptions: PropTypes.object,\n};\n\nexport default LoaderBase;\n","import React from 'react';\nimport { pluralizer } from './utils/utils';\nimport PrintSizeSelector from './print-size-selector';\n\nexport default function MobileLoaderFooter({\n  files,\n  brokenPreviews,\n  addPhotosDisabled,\n  handleAddPhotosClick,\n  onCancelClick,\n  onErrorIconClick,\n}) {\n  return (\n    <div className=\"w-100\">\n      <PrintSizeSelector />\n      <div className=\"d-flex justify-content-between align-items-center buttons\">\n        <button\n          aria-label=\"Cancel\"\n          className=\"btn btn-link mb-0 px-2 cancel\"\n          data-dismiss=\"modal\"\n          type=\"button\"\n          onClick={onCancelClick}>\n          Cancel\n        </button>\n        <div className=\"d-flex flex-nowrap\">\n          <p className=\"selected-images-number m-0\">\n            {pluralizer(files.length, 'photo')} selected\n          </p>\n          {brokenPreviews.length > 0 && (\n            <button\n              className=\"btn btn-link m-0 h-auto errors-link\"\n              onClick={onErrorIconClick}>\n              {pluralizer(brokenPreviews.length, 'error')}\n              <span className=\"fa-stack text-dark icon ml-1\">\n                <i className=\"far fa-circle fa-stack-2x p-0\" />\n                <i className=\"fas fa-exclamation fa-stack-1x  p-0\" />\n              </span>\n            </button>\n          )}\n        </div>\n        <button\n          aria-label=\"Add photos\"\n          className=\"btn btn-primary action mb-0 font-weight-bold\"\n          disabled={addPhotosDisabled || !files.length}\n          type=\"button\"\n          onClick={handleAddPhotosClick}>\n          Add\n        </button>\n      </div>\n    </div>\n  );\n}\n","import React from 'react';\nimport { pluralizer } from './utils/utils';\nimport PrintSizeSelector from './print-size-selector';\n\nexport default function DesktopLoaderFooter({\n  files,\n  brokenPreviews,\n  addPhotosDisabled,\n  handleAddPhotosClick,\n  onCancelClick,\n  onErrorIconClick,\n}) {\n  return (\n    <div className=\"d-flex flex-nowrap justify-content-between buttons mx-sm-3 mx-md-3 mx-lg-0 mt-lg-2\">\n      <div className=\"d-md-flex flex-shrink-1 mr-2 mr-md-0\">\n        <p className=\"selected-images-number m-0\">\n          {pluralizer(files.length, 'photo')} selected\n        </p>\n        {brokenPreviews.length > 0 && (\n          <button\n            className=\"btn btn-link ml-md-2 mb-0 h-auto errors-link\"\n            onClick={onErrorIconClick}>\n            {pluralizer(brokenPreviews.length, 'error')}\n            <span className=\"fa-stack text-dark icon ml-1\">\n              <i className=\"far fa-circle fa-stack-2x p-0\" />\n              <i className=\"fas fa-exclamation fa-stack-1x  p-0\" />\n            </span>\n          </button>\n        )}\n      </div>\n      <PrintSizeSelector />\n      <div className=\"d-flex flex-shrink-1\">\n        <button\n          aria-label=\"Cancel\"\n          className=\"btn border-0 bg-white mb-0 py-0 cancel\"\n          data-dismiss=\"modal\"\n          type=\"button\"\n          onClick={onCancelClick}>\n          Cancel\n        </button>\n        <button\n          aria-label=\"Add photos\"\n          className=\"btn btn-primary btn-md-long action mb-0 font-weight-bold\"\n          disabled={addPhotosDisabled || !files.length}\n          type=\"button\"\n          onClick={handleAddPhotosClick}>\n          Add\n        </button>\n      </div>\n    </div>\n  );\n}\n","import React, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport ScreenAndStyle from '../_utils/screen-and-style';\nimport Thumbnails from './thumbnails/thumbnails';\nimport MobileLoaderFooter from './mobile-loader-footer';\nimport DesktopLoaderFooter from './desktop-loader-footer';\n\nfunction LoaderFooter({\n  files,\n  onAddImages,\n  onErrorIconClick,\n  onImagePreviewError,\n  onRemoveThumbnail,\n  brokenPreviews,\n  onCancelClick,\n}) {\n  const [addPhotosDisabled, setAddPhotosDisabled] = useState(false);\n  const handleAddPhotosClick = useCallback(() => {\n    setAddPhotosDisabled(true);\n    onAddImages();\n    setTimeout(() => setAddPhotosDisabled(false), 2000);\n  }, [onAddImages]);\n  const isMobile =\n    ScreenAndStyle.isBootstrapXS() || ScreenAndStyle.isBootstrapSM();\n  const footerProps = {\n    files,\n    brokenPreviews,\n    addPhotosDisabled,\n    handleAddPhotosClick,\n    onCancelClick,\n    onErrorIconClick,\n  };\n\n  return (\n    <div className=\"modal-footer d-flex flex-wrap rounded-0 my-2\">\n      <div className=\"w-100 thumbnails-mini\">\n        {files.length > 0 && (\n          <Thumbnails\n            classes=\"d-md-none d-lg-flex\"\n            files={files}\n            withOrientation={true}\n            onErrorIconClick={onErrorIconClick}\n            onImagePreviewError={onImagePreviewError}\n            onRemoveThumbnail={onRemoveThumbnail}\n            displayCaption={true}\n          />\n        )}\n      </div>\n      {(isMobile && <MobileLoaderFooter {...footerProps} />) || (\n        <DesktopLoaderFooter {...footerProps} />\n      )}\n    </div>\n  );\n}\n\nLoaderFooter.propTypes = {\n  files: PropTypes.array,\n  onAddImages: PropTypes.func.isRequired,\n  onErrorIconClick: PropTypes.func.isRequired,\n  onImagePreviewError: PropTypes.func.isRequired,\n  onRemoveThumbnail: PropTypes.func.isRequired,\n  brokenPreviews: PropTypes.array,\n  onCancelClick: PropTypes.func.isRequired,\n};\n\nexport default LoaderFooter;\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport ButtonRibbon from '../_utils/button-ribbon';\nimport sendToGoogleAnalytics from '../_prism-builder/desktop/slot-tools/send-to-google-analytics';\n\nconst LoaderNav = props => {\n  const serviceTitle = {\n    upload: props.isMobile ? 'My Phone' : 'My Computer',\n    mobile: 'My Phone',\n    albums: `My ${window.store} Photos`,\n    picasa: 'Google Photos',\n    facebook: 'Facebook',\n    dropbox: 'Dropbox',\n    instagram: 'Instagram',\n    flickr: 'Flickr',\n  };\n\n  const handleClick = service => {\n    sendToGoogleAnalytics('loader-nav', `${serviceTitle[service]}`);\n  };\n\n  return (\n    <ButtonRibbon className=\"loader-nav\" role=\"tablist\" loaderNav>\n      {props.imgSources.map(({ service, title }, index) => {\n        const selected = props.activeSource === index;\n        return (\n          <button\n            aria-controls={'image-loader-service-' + service}\n            aria-label={`${serviceTitle[service]}`}\n            aria-selected={selected}\n            className={classNames('service', service, { active: selected })}\n            key={service}\n            role=\"tab\"\n            type=\"button\"\n            onClick={() => {\n              props.onSourceSelect(index, service);\n              handleClick(service);\n            }}>\n            {serviceTitle[service]}\n          </button>\n        );\n      })}\n    </ButtonRibbon>\n  );\n};\n\nexport default LoaderNav;\n","'use strict';\n\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport FocusTrap from 'focus-trap-react';\n\nconst uploadErrors = props => (\n  <FocusTrap active={props.isOpen}>\n    <div className={classNames('backdrop', props.isOpen ? 'd-flex' : 'd-none')}>\n      <div className=\"upload-errors bg-white flex-column\">\n        <button\n          type=\"button\"\n          className=\"close p-0\"\n          aria-label=\"Close\"\n          onClick={() => props.onClose()}\n        >\n          <i className=\"fas fa-times\" />\n        </button>\n        <div className=\"p-4 pr-2 h-100 d-flex flex-column\">\n          <h2 className=\"title ml-0 d-flex\">\n            <span className=\"fa-stack text-dark\">\n              <i className=\"far fa-circle fa-stack-2x\" />\n              <i className=\"fas fa-exclamation fa-stack-1x\" />\n            </span>\n            Upload Error\n          </h2>\n          <p className=\"content py-2\">\n            {props.errors.length} of your files cannot be uploaded and will not be added to your project:\n          </p>\n          <ul className=\"errors-list flex-grow-1 list-unstyled p-1\">\n            {\n              props.errors.map((error, i) => (\n                <li key={i + error.name} className=\"content m-0\">\n                  {error.name}\n                </li>\n              ))\n            }\n          </ul>\n          <button\n            type=\"button\"\n            aria-label=\"Remove all\"\n            className=\"btn btn-primary mt-auto ml-auto font-weight-bold px-0\"\n            onClick={props.onRemoveAllClick}\n          >\n            Remove all\n          </button>\n        </div>\n      </div>\n    </div>\n  </FocusTrap>\n);\n\nexport default uploadErrors;\n","const LOADER_DIMENSIONS = {\n  mobile: {\n    margin: 0,\n    modal: {\n      width: '100%',\n      height: '100%',\n    },\n    header: {\n      height: 79,\n    },\n    footer: {\n      height: 60,\n    }\n  },\n  desktop: {\n    margin: 0.13,\n    modal: {\n      width: '75%',\n      height: '88%',\n    },\n    header: {\n      height: 83,\n    },\n    footer: {\n      height: 238,\n    }\n  }\n}\n\nconst LoaderSizeMixin = {\n  handleResize() {\n    const { viewport: { height } } = this.props;\n    const dimensions = this.loaderDimensions();\n    const fixedHeight = dimensions.header.height + dimensions.footer.height\n    const modalWindowHeight = (height - (height * dimensions.margin) - fixedHeight);\n\n    this.setState({\n      windowHeight: modalWindowHeight\n    });\n  },\n\n  loaderDimensions() {\n    const { viewport: { isMobile } } = this.props;\n\n    return isMobile ? LOADER_DIMENSIONS.mobile : LOADER_DIMENSIONS.desktop;\n  }\n};\n\nexport default LoaderSizeMixin;\n"],"file":"assets/loader-size-mixin-7be952ef.js"}